KVM usb switch?

Hello and thank you for this amazing project!
I have a S3423DWC monitor, which have KVM ability. From Windows, the DDPM tool allow switch the attached USBs to different inputs (when I use PIP/PBP). Is this possible to do with m1ddcl?
Let me know if I can do some tests/debugs to make that functionality possible.
BR,
Valentin

If there are specific ddc commands for it then it can be implemented. I am not sure how well documented these commands are as this seems to be a highly vendor/model specific feature.

Any recomendations to sniff/inspect that? I can provide traces of the traffic and try to help implement this feature

I wanted to do this to so I had a crack at it and came up with something that works for my setup. My exact method might not work for you but hopefully the general approach works for you.
I have a single monitor with Mac Studio connected to it using USB-C and a laptop running Ubuntu connected using HDMI. I also have a KVM but I'm only using that for input devices, not video because the KVM is HDMI based and MonitorControl can't use HDMI to control screen brightness (I believe that's a limitation of the M1 from what I've read). So I want to use DDC/CI to change the display's video input when I switch the KVM.
For the mac studio I made use of this fantastic little utility: https://github.com/snosrap/xpc_set_event_stream_handler
MacOS's system for launching programs based on certain conditions or events is called launchd but unfortunately if you use launchd to trigger a shell script directly that script will be run multiple times when the device is connected because launchd expects the executed program to register that it has consumed the triggering event. xpc_set_event_stream_handler provides a simple bootstrapping program which will mark the event as consumed then call whatever program or script you'd like.
xpc_set_event_stream_handler must be compiled (you'll probably need xcode or xcode command line tools installed if not already). I did that with:
cd /tmp
git clone https://github.com/snosrap/xpc_set_event_stream_handler
cd xpc_set_event_stream_handler/xpc_set_event_stream_handler
gcc -framework Foundation -o xpc_set_event_stream_handler main.m
sudo mv xpc_set_event_stream_handler /usr/local/bin/

Then I created a script with my desired m1ddc command for switching displays and saved that in /usr/local/bin/kvm-switch-attached:
#!/bin/bash
/usr/local/bin/m1ddc display 1 set input 27

Then I marked it as executable with chmod +x /usr/local/bin/kvm-switch-attached
Next I created my launchd plist at /Library/LaunchDaemons/com.kvm-switch-attached.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.KVMSwitchAttached</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/local/bin/xpc_set_event_stream_handler</string>
		<string>/usr/local/bin/kvm-switch-attached</string>
	</array>
	<key>LaunchEvents</key>
	<dict>
		<key>com.apple.iokit.matching</key>
		<dict>
			<key>com.KVMSwitchAttached.Event</key>
			<dict>
				<key>idVendor</key>
				<integer>8523</integer>
				<key>idProduct</key>
				<integer>29264</integer>
				<key>IOProviderClass</key>
				<string>IOUSBDevice</string>
				<key>IOMatchLaunchStream</key>
				<true/>
			</dict>
		</dict>
	</dict>
</dict>
</plist>

I got the idVendor and idProduct values from System Infomation and converted the values from there hex representation to decimal using an online converter.
I registered the launchd plist with sudo launchctl load /Library/LaunchDaemons/com.kvm-switch-attached.plist.
I couldn't find a way a good way to trigger a script disconnect of the KVM's usb hub. So instead I did a similar thing on my Ubuntu laptop and got that to switch inputs when the hub is connected. I used u/MortimerErnest's solution although as you can see in my comment I simplified it a tad.

Any further thought/progress on DDC commands for KVM? Would love this for Philips ultra wide PBP


CronJob API version upgrade to batch/v1

Installing the current helm chart Dgraph v24.0.5 failed if backup is enabled (using current Kubernetes v1.31):
Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: resource mapping not found for name: "dgraph-cluster-1-dgraph-backups-inc" namespace: "prod" from "": no matches for kind "CronJob" in version "batch/v1beta1" ensure CRDs are installed first
The batch/v1beta1 API version of CronJob is no longer served as of v1.25.
deprecation guide
Thanks

 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.You have signed the CLA already but the status is still pending? Let us recheck it.


fix(ssr): call serverPrefetch hooks in mixins(fix: vuejs#2889)

Hello all,
This pr addresses #2889 (serverPrefetch hooks in mixins not called during SSR), tests included. Thanks to how applyOptions is designed, it also takes care of serverPrefetch hooks in extends options.
Please let me know your thoughts. Thank you very much!
Close #2889

Note: this pr is obsoleted by #3070. It will be closed once #3070 is merged.


clangd doesn't find reference to ctor from perfect forwarding make_object function

In a project that uses clangd, paste in the following snippet to some file and save:
namespace Foo {

template<typename T, typename... Args>
static T* make_object(Args... args) {
  return new T(forward<Args>(args)...);
}

struct C {
  C(int a);
};

C::C(int) {}

void f() {
  C* c = make_object<C>(4);
  (void)c;
}

}

Then right-click the C of C(int a); in VSCode and pick "show all references".
Expected: Shows the make_object<C>(4) call.
Actual: Shows just ctor declaration and definition.
This is with "Apple clangd version 15.0.0 (clang-15<IP_ADDRESS>) Features: mac+xpc Platform: x86_64-apple-darwin22.6.0; target=arm64-apple-darwin22.6.0", the version in the latest Xcode.
Editor/LSP plugin: vscode, clangd plugin.
Operating system: macOS.
I have a local build of clangd, clangd-indexer etc flying around. Please let me know if there are any commands I can run to help narrow it down further.

Please see https://github.com/clangd/clangd/issues/716 for discussion of this issue and potential fix approaches.
I'll close this one as a duplicate to keep the discussion in one place.

Duplicate of #716


Error when running the pipeline

I got this error after running the pipeline as described in the docs:
FrenchServerDependencyParseTask processing article 'Affaire des march�s publics d'�le-de-France'...
FrenchServerDependencyParseTask finished sentence #194974/00001.ERROR: [pid 23] Worker Worker(salt=800150576, workers=1, host=b3a5ccfc6877, username=root, pid=23) failed    FrenchServerDependencyParseTask(task_config={"PIPELINE_DEBUG": true, "CORPUS_ENCODING": "utf-8", "STANFORD_CORENLP_SERVER_ADDRESS": "http://stanford:9000", "LANGUAGE_ABBREVIATION": "fr", "ONLY_INCLUDE_RELEVANT_SENTENCES": true, "ONLY_INCLUDE_RELEVANT_ARTICLES": true, "SENTENCE_TOKENIZER_PATH": "tokenizers/punkt/PY3/french.pickle", "CORPUS_INPATH": "/french_corpora/corpus_affairs_modern_french_in_france.xml", "WIKIPEDIA_ARTICLE_TAG_PATTERN": "<doc id=\"(\\d+)\" url=\"(.+?)\" title=\"(.+?)\">", "WIKIPEDIA_READING_OUTPUT_PATH": "/french_pipeline/fr_articles.json", "STANFORD_MODELS_PATH": "/stanford_models/french.jar", "STANFORD_NER_MODEL_PATH": "/stanford_models/ner-model-french.ser.gz", "NES_OUTPUT_PATH": "/french_pipeline/fr_articles_nes.json", "CORENLP_STANFORD_NER_MODEL_PATH": "/stanford_models/ner-model-french.ser.gz", "STANFORD_POSTAGGER_PATH": "/stanford_models/stanford-postagger.jar", "STANFORD_POS_MODEL_PATH": "/stanford_models/french.tagger", "POS_OUTPUT_PATH": "/french_pipeline/fr_articles_pos.json", "DEPENDENCY_TREE_KEEP_FIELDS": ["address", "ctag", "deps", "word", "head", "rel"], "STANFORD_CORENLP_MODELS_PATH": "/stanford_models/stanford-corenlp-3.7.0-models.jar", "STANFORD_DEPENDENCY_MODEL_PATH": "/stanford_models/UD_French.gz", "DEPENDENCY_OUTPUT_PATH": "/french_pipeline/fr_articles_dependencies.json", "VERB_NODE_POS_TAGS": ["VPP", "V", "VINF", "VPR", "VS"], "OMITTED_TOKENS_FOR_ALIGNMENT": [], "NER_TAGSET": ["I-PERS", "B-PERS", "I-LOC", "B-LOC", "I-ORG", "B-ORG", "I-MISC", "B-MISC"], "ORE_OUTPUT_PATH": "/french_pipeline/fr_articles_relations.json", "PARTICIPATION_PHRASES": {"I-PER": "particip\u00e9 \u00e0", "I-LOC": "est la sc\u00e8ne de", "I-ORG": "est impliqu\u00e9 dans", "I-MISC": "est li\u00e9 \u00e0", "DATE": "\u00e9tait au moment de", "DEFAULT": "particip\u00e9 \u00e0"}, "PE_OUTPUT_PATH": "/french_pipeline/fr_articles_participations.json", "DEFAULT_NE_TAG": "O", "RELATION_MERGING_OUTPUT_PATH": "/french_pipeline/fr_articles_merged_relations.json", "PC_OUTPUT_PATH": "/french_pipeline/fr_articles_properties.json", "RELEVANT_WIKIDATA_PROPERTIES": {"I-PER": ["P21", "P463", "P106", "P108", "P39", "P102", "P1416", "P18"], "I-LOC": ["P30", "P17", "P18"], "I-ORG": ["P1384", "P335", "P159", "P18"], "I-MISC": ["P18"]}, "WIKIDATA_PROPERTIES_IMPLYING_RELATIONS": {"P463": "Organization", "P108": "Company", "P102": "Party", "P1416": "Party", "P335": "Company"}, "PIPELINE_RUN_INFO_OUTPUT_PATH": "/french_pipeline/fr_info.json", "NEO4J_USER": "neo4j", "NEO4J_PASSWORD": "neo4jj", "NEO4J_HOST": "neo4j", "DATABASE_CATEGORIES": {"Entity": 0, "Organization": 2, "Company": 3, "Party": 3, "Miscellaneous": 1, "Affair": 6, "Politician": 3, "Person": 2, "Businessperson": 3, "Media": 4, "Location": 1, "Journalist": 5}})
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/luigi/worker.py", line 199, in run
    new_deps = self._run_get_new_deps()
  File "/usr/local/lib/python3.6/site-packages/luigi/worker.py", line 139, in _run_get_new_deps
    task_gen = self.task.run()
  File "/data/src/app/bwg/decorators.py", line 89, in func_wrapper
    function_result = func(*args, **kwargs)
  File "/data/src/app/bwg/tasks/dependency_parsing.py", line 35, in run
    serializing_function=serialize_dependency_parse_tree, output_file=output_file,
  File "/data/src/app/bwg/decorators.py", line 89, in func_wrapper
    function_result = func(*args, **kwargs)
  File "/data/src/app/bwg/mixins.py", line 193, in process_articles
    for serializing_kwargs in self.task_workflow(article, **self.workflow_resources):
  File "/data/src/app/bwg/tasks/dependency_parsing.py", line 59, in task_workflow
    parsed_sentence = self._dependency_parse(sentence_data, **workflow_resources)
  File "/data/src/app/bwg/tasks/corenlp_server_tasks.py", line 78, in _dependency_parse
    sentence_data, action="depparse", postprocessing_func=self._postprocess_dependency_parsed,
  File "/data/src/app/bwg/mixins.py", line 56, in process_sentence_with_corenlp_server
    return postprocessing_func(result_json)
  File "/data/src/app/bwg/tasks/corenlp_server_tasks.py", line 91, in _postprocess_dependency_parsed
    if len(result_json["sentences"]) == 0:
TypeError: string indices must be integers
INFO: Informed scheduler that task   FrenchServerDependencyParseTask___PIPELINE_DEBUG_ef4d9c7c93   has status   FAILED

Hi Peter,
We have updated some stuff with Dennis since yesterday.

Please make sure you are in the latest commit on master
Download this data pipeline:
https://www.dropbox.com/s/cu3q9k8m2lbt6ed/pipeline_french.zip?dl=0 and
place it in ./backend/data/pipeline_french
Do this part (make sure you have deleted all the previous containers)
https://github.com/majdigital/bigworldgraph#getting-serious-running-the-real-pipeline

Note:
[image: image.png]
This section is taking a while and there's no progress indicators so just
wait :)
It should work. At least, it did on my side, I got the project running.
Btw, tests aren't working, I just skipped this section.
Let me know if it's better
See ya
On Wed, Jun 12, 2019 at 9:57 AM Peter Bouda<EMAIL_ADDRESS>wrote:

I got this error after running the pipeline as described in the docs:
FrenchServerDependencyParseTask processing article 'Affaire des march�s publics d'�le-de-France'...
FrenchServerDependencyParseTask finished sentence #194974/00001.ERROR: [pid 23] Worker Worker(salt=800150576, workers=1, host=b3a5ccfc6877, username=root, pid=23) failed    FrenchServerDependencyParseTask(task_config={"PIPELINE_DEBUG": true, "CORPUS_ENCODING": "utf-8", "STANFORD_CORENLP_SERVER_ADDRESS": "http://stanford:9000", "LANGUAGE_ABBREVIATION": "fr", "ONLY_INCLUDE_RELEVANT_SENTENCES": true, "ONLY_INCLUDE_RELEVANT_ARTICLES": true, "SENTENCE_TOKENIZER_PATH": "tokenizers/punkt/PY3/french.pickle", "CORPUS_INPATH": "/french_corpora/corpus_affairs_modern_french_in_france.xml", "WIKIPEDIA_ARTICLE_TAG_PATTERN": "<doc id="(\d+)" url="(.+?)" title="(.+?)">", "WIKIPEDIA_READING_OUTPUT_PATH": "/french_pipeline/fr_articles.json", "STANFORD_MODELS_PATH": "/stanford_models/french.jar", "STANFORD_NER_MODEL_PATH": "/stanford_models/ner-model-french.ser.gz", "NES_OUTPUT_PATH": "/french_pipeline/fr_articles_nes.json", "CORENLP_STANFORD_NER_MODEL_PATH": "/stanford_models/ner-model-french.ser.gz", "STANFORD_POSTAGGER_PATH": "/stanford_models/stanford-postagger.jar", "STANFORD_POS_MODEL_PATH": "/stanford_models/french.tagger", "POS_OUTPUT_PATH": "/french_pipeline/fr_articles_pos.json", "DEPENDENCY_TREE_KEEP_FIELDS": ["address", "ctag", "deps", "word", "head", "rel"], "STANFORD_CORENLP_MODELS_PATH": "/stanford_models/stanford-corenlp-3.7.0-models.jar", "STANFORD_DEPENDENCY_MODEL_PATH": "/stanford_models/UD_French.gz", "DEPENDENCY_OUTPUT_PATH": "/french_pipeline/fr_articles_dependencies.json", "VERB_NODE_POS_TAGS": ["VPP", "V", "VINF", "VPR", "VS"], "OMITTED_TOKENS_FOR_ALIGNMENT": [], "NER_TAGSET": ["I-PERS", "B-PERS", "I-LOC", "B-LOC", "I-ORG", "B-ORG", "I-MISC", "B-MISC"], "ORE_OUTPUT_PATH": "/french_pipeline/fr_articles_relations.json", "PARTICIPATION_PHRASES": {"I-PER": "particip\u00e9 \u00e0", "I-LOC": "est la sc\u00e8ne de", "I-ORG": "est impliqu\u00e9 dans", "I-MISC": "est li\u00e9 \u00e0", "DATE": "\u00e9tait au moment de", "DEFAULT": "particip\u00e9 \u00e0"}, "PE_OUTPUT_PATH": "/french_pipeline/fr_articles_participations.json", "DEFAULT_NE_TAG": "O", "RELATION_MERGING_OUTPUT_PATH": "/french_pipeline/fr_articles_merged_relations.json", "PC_OUTPUT_PATH": "/french_pipeline/fr_articles_properties.json", "RELEVANT_WIKIDATA_PROPERTIES": {"I-PER": ["P21", "P463", "P106", "P108", "P39", "P102", "P1416", "P18"], "I-LOC": ["P30", "P17", "P18"], "I-ORG": ["P1384", "P335", "P159", "P18"], "I-MISC": ["P18"]}, "WIKIDATA_PROPERTIES_IMPLYING_RELATIONS": {"P463": "Organization", "P108": "Company", "P102": "Party", "P1416": "Party", "P335": "Company"}, "PIPELINE_RUN_INFO_OUTPUT_PATH": "/french_pipeline/fr_info.json", "NEO4J_USER": "neo4j", "NEO4J_PASSWORD": "neo4jj", "NEO4J_HOST": "neo4j", "DATABASE_CATEGORIES": {"Entity": 0, "Organization": 2, "Company": 3, "Party": 3, "Miscellaneous": 1, "Affair": 6, "Politician": 3, "Person": 2, "Businessperson": 3, "Media": 4, "Location": 1, "Journalist": 5}})
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/luigi/worker.py", line 199, in run
new_deps = self._run_get_new_deps()

File "/usr/local/lib/python3.6/site-packages/luigi/worker.py", line 139, in _run_get_new_deps
task_gen = self.task.run()

File "/data/src/app/bwg/decorators.py", line 89, in func_wrapper
function_result = func(*args, **kwargs)

File "/data/src/app/bwg/tasks/dependency_parsing.py", line 35, in run
serializing_function=serialize_dependency_parse_tree, output_file=output_file,

File "/data/src/app/bwg/decorators.py", line 89, in func_wrapper
function_result = func(*args, **kwargs)

File "/data/src/app/bwg/mixins.py", line 193, in process_articles
for serializing_kwargs in self.task_workflow(article, **self.workflow_resources):

File "/data/src/app/bwg/tasks/dependency_parsing.py", line 59, in task_workflow
parsed_sentence = self._dependency_parse(sentence_data, **workflow_resources)

File "/data/src/app/bwg/tasks/corenlp_server_tasks.py", line 78, in _dependency_parse
sentence_data, action="depparse", postprocessing_func=self._postprocess_dependency_parsed,

File "/data/src/app/bwg/mixins.py", line 56, in process_sentence_with_corenlp_server
return postprocessing_func(result_json)

File "/data/src/app/bwg/tasks/corenlp_server_tasks.py", line 91, in _postprocess_dependency_parsed
if len(result_json["sentences"]) == 0:

TypeError: string indices must be integers
INFO: Informed scheduler that task   FrenchServerDependencyParseTask___PIPELINE_DEBUG_ef4d9c7c93   has status   FAILED
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/majdigital/bigworldgraph/issues/38?email_source=notifications&email_token=ACEQ6AVTVFNFLZGQEPY3DLDP2C3AHA5CNFSM4HXGY6QKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GZAERTA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACEQ6AWT52MZP6KABDGHK4TP2C3AHANCNFSM4HXGY6QA
.

Hi Peter,
We have updated some stuff with Dennis since yesterday.

Please make sure you are in the latest commit on master
Download this data pipeline and place it in ./backend/data/pipeline_french
Do this part (make sure you have deleted all the previous containers)
https://github.com/majdigital/bigworldgraph#getting-serious-running-the-real-pipeline

Note:

This section is taking a while and there's no progress indicators so just
wait :)

It should work. At least, it did on my side, I got the project running.
Btw, tests aren't working, I just skipped this section.
Let me know if it's better

Unfortunately there seem to be some errors with the pipeline sometimes that are more obscure and that I don't have time to look into right now :-( there is one that occurs when you use the data Mickael posted above that I am trying to fix now. If you use that data, the pipeline recognizes that some tasks have already been executed and skips them (except for the last task, which is writing the data into the database).


Linear Regression

Great work on regression! This method will be very useful in many predictive modeling techniques. Looking at your day 3 assignment section 2.6- insure that your engineered features are added to the DataFrame that you run the regression on. It appears the 2 features you created are not included. Very good work this week Keep it up !


IReadOnlyStore and VirtualStore

I am not sure about this one.  Is this duplicating functionality?
One semantic issue I see is that when you write to a VirtualStore, there's no guarantee that the value will ever change.
That causes some issue when binding a VirtualStore to a set of radio buttons:
If the virtual store rejects the write message, the UI will not reflect it.
A solution might be to trigger a fake notification event before the dispatch function is called, but that would create even more complex interaction with Store.distinct.
I'm still experimenting and growing my test app, so I'll probably revisit this PR later on.
Example usage of VirtualStore
Where ReadOnlyStore would be useful

I see.
An IVirtualStore is probably what IStore should implement, and represents a higher level of abstraction.
I'n not sure about ReadOnlyStore - is there any difference between IReadOnlyStore<'T> and IObservable<'T> ? That's what I use when I want to "hide" the update API.

With an IReadOnlyStore, you can retrieve the current value.
I would use it with my theme store: I read the current theme to create the correctly themed monaco-editor, and I subscribe to the observable to update monaco-editor when the theme changes.
I guess it should probably be called IObservableWithValue, because it really isn't a store, now that I come to think of it.

Yes, we can create a class that subscribes to an IObservable and caches the values as they pass through. The only issue with that is that we can't rely on having an initial value (although IStores are defined to push the current value upon subscription). I like the idea

Hello PY - I think this is now supported with recent fixes. There is an IReadOnlyStore, and I think we have discussed this issue since this PR. I will close the PR, but we can open again if necessary.


Fee Stake: Perth

text: Card goes out of play if the title is contested: it cannot be burned by a referendum
link: https://groups.google.com/g/rec.games.trading-cards.jyhad/c/gaFBeSrs7fU/m/v0VVEOJd2HYJ

Duplicate


E2e

Description
Create e2e test for aio-cli-plugin-config
Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Codecov Report

Merging #81 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master    #81   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           9      9
  Lines         163    163
  Branches       34     34
=====================================
  Hits          163    163

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 b17c37e...db04300. Read the comment docs.


Errors in test run after ch 8

hi miguel,
i made it through to chapter 8. I ran the tests that you had us put into the code but i am getting back 4 errors, which are as follows:
ERROR: test_avatar (main.UserModelCase)
Traceback (most recent call last):
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\interfaces.py", line 509, in _get_strategy
return self._strategies[key]
KeyError: (('lazy', 'dymanic'),)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "tests.py", line 22, in test_avatar
u = User(username='john'<EMAIL_ADDRESS>File "", line 2, in init
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 391, in _new_state_if_none
state = self._state_constructor(instance, self)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 767, in get
obj.dict[self.name] = result = self.fget(obj)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 221, in state_constructor
self.dispatch.first_init(self, self.class)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\event\attr.py", line 284, in call
fn(*args, **kw)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3139, in _event_on_first_init
configure_mappers()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3029, in configure_mappers
mapper._post_configure_properties()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 1828, in _post_configure_properties
prop.init()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\interfaces.py", line 184, in init
self.do_init()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\relationships.py", line 1661, in do_init
super(RelationshipProperty, self).do_init()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\interfaces.py", line 539, in do_init
self.strategy = self._get_strategy(self.strategy_key)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\interfaces.py", line 511, in _get_strategy
cls = self._strategy_lookup(*key)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\interfaces.py", line 570, in _strategy_lookup
raise Exception("can't locate strategy for %s %s" % (cls, key))
Exception: can't locate strategy for <class 'sqlalchemy.orm.relationships.RelationshipProperty'> (('lazy', 'dymanic'),)
======================================================================
ERROR: test_follow (main.UserModelCase)
Traceback (most recent call last):
File "tests.py", line 26, in test_follow
u1 = User(username='john'<EMAIL_ADDRESS>File "", line 2, in init
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 391, in _new_state_if_none
state = self._state_constructor(instance, self)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 767, in get
obj.dict[self.name] = result = self.fget(obj)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 221, in state_constructor
self.dispatch.first_init(self, self.class)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\event\attr.py", line 284, in call
fn(*args, **kw)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3139, in _event_on_first_init
configure_mappers()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3026, in configure_mappers
raise e
sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'Mapper|User|user'
. Original exception was: can't locate strategy for <class 'sqlalchemy.orm.relationships.RelationshipProperty'> (('lazy', 'dymanic'),)
======================================================================
ERROR: test_follow_posts (main.UserModelCase)
Traceback (most recent call last):
File "tests.py", line 48, in test_follow_posts
u1 = User(username='john'<EMAIL_ADDRESS>File "", line 2, in init
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 391, in _new_state_if_none
state = self._state_constructor(instance, self)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 767, in get
obj.dict[self.name] = result = self.fget(obj)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 221, in state_constructor
self.dispatch.first_init(self, self.class)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\event\attr.py", line 284, in call
fn(*args, **kw)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3139, in _event_on_first_init
configure_mappers()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3026, in configure_mappers
raise e
sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'Mapper|User|user'
. Original exception was: can't locate strategy for <class 'sqlalchemy.orm.relationships.RelationshipProperty'> (('lazy', 'dymanic'),)
======================================================================
ERROR: test_password_hashing (main.UserModelCase)
Traceback (most recent call last):
File "tests.py", line 16, in test_password_hashing
u = User(username='susan')
File "", line 2, in init
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 391, in _new_state_if_none
state = self._state_constructor(instance, self)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 767, in get
obj.dict[self.name] = result = self.fget(obj)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 221, in state_constructor
self.dispatch.first_init(self, self.class)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\event\attr.py", line 284, in call
fn(*args, **kw)
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3139, in _event_on_first_init
configure_mappers()
File "C:\Users\Marla\AppData\Local\conda\conda\envs\flask-env\lib\site-packages\sqlalchemy\orm\mapper.py", line 3026, in configure_mappers
raise e
sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'Mapper|User|user'
. Original exception was: can't locate strategy for <class 'sqlalchemy.orm.relationships.RelationshipProperty'> (('lazy', 'dymanic'),)
I am having difficulty understanding where to find the places in the code where these errors are located, and as a result, I am having difficulty solving them on my own.
I have checked many different files to make sure that my code is the same as your code. i have checked models.py which is exact, init.py = exact, and several others. Can you help me understand the error messages, and also find the solutions?

You have a typo. Instead of dymanic, you have to use dynamic.

thank you so much. I looked at it so many times and i didn't even see it.
On Mon, Apr 16, 2018 at 6:15 PM Miguel Grinberg<EMAIL_ADDRESS>wrote:

You have a typo. Instead of dymanic, you have to use dynamic.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/miguelgrinberg/microblog/issues/100#issuecomment-381779167,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOKtC4ErmW3T_gugTclI-vU_KztDBzr_ks5tpSYlgaJpZM4TXXoc
.

here are some new errors...lol
FAIL: test_avatar (main.UserModelCase)
Traceback (most recent call last):
File "tests.py", line 23, in test_avatar
self.assertEqual(u.avatar(128), ('
https://www.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?d=identicon&s=128
'))
AssertionError: 'http[17 chars]com/avatar/d4c74594d841139328695756648b6bd6?
d=identicon&s=128' != 'http[17 chars]com/ava
tar/d4c74594d841139328695756648b6bd6?d=identicon&s=128'

https://www.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?
d=identicon&s=128
?                                                                  -

https://www.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?d=identicon&s=128
======================================================================
FAIL: test_follow_posts (main.UserModelCase)
Traceback (most recent call last):
File "tests.py", line 75, in test_follow_posts
self.assertEqual(f1, [p2, p3])
AssertionError: Lists differ: [, , ] != [, ]
First differing element 1:

First list contains 1 additional elements.
First extra element 2:

[, , ]
?                                            ^ ------------------- ^^^^^^^

[, ]
?                                            ^  ^

On Mon, Apr 16, 2018 at 7:07 PM Tim Novak<EMAIL_ADDRESS>wrote:

thank you so much. I looked at it so many times and i didn't even see it.
On Mon, Apr 16, 2018 at 6:15 PM Miguel Grinberg<EMAIL_ADDRESS>wrote:

You have a typo. Instead of dymanic, you have to use dynamic.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/miguelgrinberg/microblog/issues/100#issuecomment-381779167,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOKtC4ErmW3T_gugTclI-vU_KztDBzr_ks5tpSYlgaJpZM4TXXoc
.

i figured out the error about the posting. it's the avatar error that i
need help with.
On Mon, Apr 16, 2018 at 7:30 PM Tim Novak<EMAIL_ADDRESS>wrote:

here are some new errors...lol
FAIL: test_avatar (main.UserModelCase)
Traceback (most recent call last):
File "tests.py", line 23, in test_avatar
self.assertEqual(u.avatar(128), ('
https://www.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?d=identicon&s=128
'))
AssertionError: 'http[17
chars]com/avatar/d4c74594d841139328695756648b6bd6? d=identicon&s=128' !=
'http[17 chars]com/ava
tar/d4c74594d841139328695756648b6bd6?d=identicon&s=128'

https://www.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?
d=identicon&s=128
?                                                                  -

https://www.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?d=identicon&s=128
======================================================================
FAIL: test_follow_posts (main.UserModelCase)
Traceback (most recent call last):
File "tests.py", line 75, in test_follow_posts
self.assertEqual(f1, [p2, p3])
AssertionError: Lists differ: [, , ] != [, ]
First differing element 1:

First list contains 1 additional elements.
First extra element 2:

[, , ]
?                                            ^ ------------------- ^^^^^^^

[, ]
?                                            ^  ^

On Mon, Apr 16, 2018 at 7:07 PM Tim Novak<EMAIL_ADDRESS>wrote:

thank you so much. I looked at it so many times and i didn't even see it.
On Mon, Apr 16, 2018 at 6:15 PM Miguel Grinberg<EMAIL_ADDRESS>wrote:

You have a typo. Instead of dymanic, you have to use dynamic.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/miguelgrinberg/microblog/issues/100#issuecomment-381779167,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOKtC4ErmW3T_gugTclI-vU_KztDBzr_ks5tpSYlgaJpZM4TXXoc
.

I can't really tell you what the problem is with the avatar, it seems the avatar URL got cut in the middle with a new line in the middle, but I'm not sure. You are supposed to debug these errors yourself. You have my code to help you.


How to train gender model?

I am trying to train the gender model (apart from the pretrained model) myself. According to the network definitions on the gender example, I have prepared a training program like this which is a combination of the network definitions of gender network and imagenet training.
#include <dlib/dnn.h>
#include <iostream>
#include <dlib/data_io.h>
#include <dlib/image_transforms.h>
#include <dlib/dir_nav.h>
#include <iterator>
#include <thread>

using namespace std;
using namespace dlib;

template <int N, template <typename> class BN, int stride, typename SUBNET>
using block = BN<con<N, 3, 3, stride, stride, relu<BN<con<N, 3, 3, stride, stride, SUBNET>>>>>;

template <int N, typename SUBNET> using res_ = relu<block<N, bn_con, 1, SUBNET>>;
template <int N, typename SUBNET> using ares_ = relu<block<N, affine, 1, SUBNET>>;

template <typename SUBNET> using alevel1 = avg_pool<2, 2, 2, 2, ares_<64, SUBNET>>;
template <typename SUBNET> using alevel2 = avg_pool<2, 2, 2, 2, ares_<32, SUBNET>>;

using net_type = loss_multiclass_log<fc<2, multiply<relu<fc<16, multiply<alevel1<alevel2< input_rgb_image_sized<32>>>>>>>>>;

#define PBSTR "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
#define PBWIDTH 40

rectangle make_random_cropping_rect_resnet(
    const matrix<rgb_pixel>& img,
    dlib::rand& rnd
)
{
    // figure out what rectangle we want to crop from the image
    double mins = 0.466666666, maxs = 0.875;
    auto scale = mins + rnd.get_random_double()*(maxs-mins);
    auto size = scale*std::min(img.nr(), img.nc());
    rectangle rect(size, size);
    // randomly shift the box around
    point offset(rnd.get_random_32bit_number()%(img.nc()-rect.width()),
                 rnd.get_random_32bit_number()%(img.nr()-rect.height()));
    return move_rect(rect, offset);
}

// ----------------------------------------------------------------------------------------

void randomly_crop_image (
    const matrix<rgb_pixel>& img,
    matrix<rgb_pixel>& crop,
    dlib::rand& rnd
)
{
    auto rect = make_random_cropping_rect_resnet(img, rnd);

    // now crop it out as a 227x227 image.
    extract_image_chip(img, chip_details(rect, chip_dims(32,32)), crop);

    // Also randomly flip the image
    if (rnd.get_random_double() > 0.5)
        crop = fliplr(crop);

    // And then randomly adjust the colors.
    apply_random_color_offset(crop, rnd);
}

void randomly_crop_images (
    const matrix<rgb_pixel>& img,
    dlib::array<matrix<rgb_pixel>>& crops,
    dlib::rand& rnd,
    long num_crops
)
{
    std::vector<chip_details> dets;
    for (long i = 0; i < num_crops; ++i)
    {
        auto rect = make_random_cropping_rect_resnet(img, rnd);
        dets.push_back(chip_details(rect, chip_dims(32,32)));
    }

    extract_image_chips(img, dets, crops);

    for (auto&& img : crops)
    {
        // Also randomly flip the image
        if (rnd.get_random_double() > 0.5)
            img = fliplr(img);

        // And then randomly adjust the colors.
        apply_random_color_offset(img, rnd);
    }
}

// ----------------------------------------------------------------------------------------

struct image_info
{
    string filename;
    string label;
    long numeric_label;
};

std::vector<image_info> get_imagenet_train_listing(
    const std::string& images_folder
)
{
    std::vector<image_info> results;
    image_info temp;
    temp.numeric_label = 0;
    // We will loop over all the label types in the dataset, each is contained in a subfolder.
    auto subdirs = directory(images_folder).get_dirs();
    // But first, sort the sub directories so the numeric labels will be assigned in sorted order.
    std::sort(subdirs.begin(), subdirs.end());
    for (auto subdir : subdirs)
    {
        // Now get all the images in this label type
        temp.label = subdir.name();
        for (auto image_file : subdir.get_files())
        {
            temp.filename = image_file;
            results.push_back(temp);
        }
        ++temp.numeric_label;
    }
    return results;
}

std::vector<image_info> get_imagenet_val_listing(
    const std::string& imagenet_root_dir,
    const std::string& validation_images_file
)
{
    ifstream fin(validation_images_file);
    string label, filename;
    std::vector<image_info> results;
    image_info temp;
    temp.numeric_label = -1;
    while(fin >> label >> filename)
    {
        temp.filename = imagenet_root_dir+"/"+filename;
        if (!file_exists(temp.filename))
        {
            cerr << "file doesn't exist! " << temp.filename << endl;
            exit(1);
        }
        if (label != temp.label)
            ++temp.numeric_label;

        temp.label = label;
        results.push_back(temp);
    }

    return results;
}

void display_progressbar(float percentage)
{
    uint32_t val = (int)(percentage * 100);
    uint32_t lpad = (int)(percentage * PBWIDTH);
    uint32_t rpad = PBWIDTH - lpad;
    printf("\r%3d%% [%.*s%*s]", val, lpad, PBSTR, rpad, "");
    fflush(stdout);
}

// ----------------------------------------------------------------------------------------

int main(int argc, char** argv) try
{
    if (argc != 3)
    {
        cout << "To run this program you need a copy of the imagenet ILSVRC2015 dataset and" << endl;
        cout << "also the file http://dlib.net/files/imagenet2015_validation_images.txt.bz2" << endl;
        cout << endl;
        cout << "With those things, you call this program like this: " << endl;
        cout << "./dnn_imagenet_train_ex /path/to/ILSVRC2015 imagenet2015_validation_images.txt" << endl;
        return 1;
    }

    cout << "\nSCANNING IMAGENET DATASET\n" << endl;

    auto listing = get_imagenet_train_listing(string("./men-women-classification/data"));
    cout << "images in dataset: " << listing.size() << endl;
    const auto number_of_classes = listing.back().numeric_label+1;
    if (listing.size() == 0 || number_of_classes != 2)
    {
        cout << "Didn't find the imagenet dataset. " << endl;
        return 1;
    }

    set_dnn_prefer_smallest_algorithms();

    const double initial_learning_rate = 0.1;
    const double weight_decay = 0.1;
    const double momentum = 0.9;

    net_type net;
    dnn_trainer<net_type> trainer(net,sgd(weight_decay, momentum));
    trainer.be_verbose();
    trainer.set_learning_rate(initial_learning_rate);
    trainer.set_synchronization_file("genderNET_trainer_state_file.dat", std::chrono::minutes(5));

    // This threshold is probably excessively large.  You could likely get good results
    // with a smaller value but if you aren't in a hurry this value will surely work well.
    trainer.set_iterations_without_progress_threshold(20);
    // Since the progress threshold is so large might as well set the batch normalization
    // stats window to something big too.
    set_all_bn_running_stats_window_sizes(net, 2);

    std::vector<matrix<rgb_pixel>> samples;
    std::vector<unsigned long> labels;

    // Start a bunch of threads that read images from disk and pull out random crops.  It's
    // important to be sure to feed the GPU fast enough to keep it busy.  Using multiple
    // thread for this kind of data preparation helps us do that.  Each thread puts the
    // crops into the data queue.
    dlib::pipe<std::pair<image_info,matrix<rgb_pixel>>> data(200);
    auto f = [&data, &listing](time_t seed)
    {
        dlib::rand rnd(time(0)+seed);
        matrix<rgb_pixel> img;
        std::pair<image_info, matrix<rgb_pixel>> temp;
        while(data.is_enabled())
        {
            temp.first = listing[rnd.get_random_32bit_number()%listing.size()];
            load_image(img, temp.first.filename);
            randomly_crop_image(img, temp.second, rnd);
            data.enqueue(temp);
        }
    };

    std::thread data_loader1([f](){ f(1); });
    std::thread data_loader2([f](){ f(2); });
    std::thread data_loader3([f](){ f(3); });
    std::thread data_loader4([f](){ f(4); });

    // The main training loop.  Keep making mini-batches and giving them to the trainer.
    // We will run until the learning rate has dropped by a factor of 1e-3.
	int j=0;
    while(trainer.get_learning_rate() >= initial_learning_rate*1e-03)
    {
        samples.clear();
        labels.clear();
	int i=0;
        // make a 160 image mini-batch
        std::pair<image_info, matrix<rgb_pixel>> img;
        while(samples.size() < 160)
        {
            data.dequeue(img);

            samples.push_back(std::move(img.second));
            labels.push_back(img.first.numeric_label);

		i++;

        }
       		 trainer.train_one_step(samples, labels);
		j++;

    }

cout << " dnn_prefer_smallest_algorithms: EXECUTED 03 Mini Batch" << endl;
    // Training done, tell threads to stop and make sure to wait for them to finish before
    // moving on.
    data.disable();
    data_loader1.join();
    data_loader2.join();
    data_loader3.join();
    data_loader4.join();

    // also wait for threaded processing to stop in the trainer.
    trainer.get_net();

    net.clean();
    cout << "saving network" << endl;
    serialize("resnet_genderNET32.dat") << net;
 << endl;
}
catch(std::exception& e)
{
    cout << e.what() << endl;
}

The training process runs fine, but average loss seems consistent.
step#: 113   learning rate: 0.0001  average loss: 0.672652     steps without apparent progress: 12
I am not sure if I'm doing anything wrong. Please help.

I also want to know how to train a gender model.
Currently, around 20% of Northeast Asian men are considered women.

There isn't anything special about training a gender model vs any other image classifier. So the normal docs in dlib showing to to train an image classifier using a CNN are what you want to look at.  Start with the two introduction examples noted http://dlib.net/ml.html#add_layer.

@davisking If I train the model using tensorflow CNN and I save the weights in dat format. Our dlib.cnn_face_detection_model_v1() will accept or not ?

no
On Fri, May 29, 2020 at 8:00 AM Pavithran<EMAIL_ADDRESS>wrote:

@davisking https://github.com/davisking If I train the model using
tensorflow CNN and I save the weights in dat format. Our
dlib.cnn_face_detection_model_v1() will accept or not ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/davisking/dlib-models/issues/35#issuecomment-635933749,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABPYFRZAQBWEQQUIGIX47B3RT6PUFANCNFSM4LJDBTLQ
.

@xhuvom As explained by Davis, there is nothing special about learning this type of model... except a lot of effort, of course, to build a database that is as clean as possible.
@Arqenza If you have a database focused on a particular ethnic group that is not sufficiently represented in my own database, I am interested! If you can share this very directly with me, I can start a full learning phase again and I will let you test it to see if it improves the situation.

@Cydral , I hadn't noticed, so my reply was late.
Thanks for the offer of a learning reunion.
However, I have already completed my Asian model last fall.
It is very satisfactory.
I owe this to Davis' advice.
If I have another chance.

Hi, no problem. I don't know if your database is shareable but if that's the case, I'm interested in improving the model prepared by my team and now available to the community.


Quickstart helm instructions Chart.yaml missing

Following the Quickstart: Keptn and Prometheus tutorial points me to: https://keptn.sh/docs/quickstart/#install-keptn

Install k3d 4.4.4 with the provided command - ✅ OK
k3d cluster create command - ✅ OK
Download Keptn CLI command - ✅ OK
helm install keptn core components command - ❌ FAIL

To Reproduce
Execute the helm command given:
helm install keptn keptn --repo=https://charts.keptn.sh \
-n keptn --create-namespace \
--set=apiGatewayNginx.type=LoadBalancer \
--set=continuousDelivery.enabled=true \
--wait

Result
user@host:~$ helm install keptn keptn --repo=https://charts.keptn.sh -n keptn --create-namespace --set=apiGatewayNginx.t
ype=LoadBalancer --set=continuousDelivery.enabled=true --wait
Error: INSTALLATION FAILED: Chart.yaml file is missing

as we don't have this quickstart anymore, i will close this ticket


Adding viper for config mgmt and refactoring logging config

This adds viper which fixes #54 and refactors our logging config which fixes #51
Modified cmd/root.go to initialize viper
Supports Env Vars
export PFLT_LOGFILE="foo.log"
export PFLT_LOGLEVEL="debug"

Supports an optional config.yaml file in the same directory as the binary
---
 logfile: "foo.log"
 loglevel: "Trace"

I'm an advocate for using Viper as it is a well tested broadly used solution for config. I'm of the opinion that it should be our default choice for config unless there is a use case where it doesn't work. I think we need a good reason to roll our own solution.
Viper handles precedence, config files, env vars and more. It's a known lib that would be familiar to new devs joining the project.
I think not needing to pass the config around makes the code simpler and easier to develop but that's just my perspective.
I may be anchored on Viper so I'm open to being overruled.


Lr/publish txn

Adds a new topic Transactions to be used in HotShot.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: lukaszrzasik:x: Lukasz RzasikLukasz Rzasik 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.You have signed the CLA already but the status is still pending? Let us recheck it.


Change len(str) to be char count, add size(str) for string size in bytes

Changes the behaviour of len(str) to match Python and return a character count. Eg len("ƒoo") is 3. This is a change from the current behaviour which uses Rust's str.len() and would return 4.

Adds a new function size(str) which gets the size in bytes of a string. This uses Rust's str.len().

This is intended to be a step toward supporting strings on accounts by allowing custom account sizing. Code like assert len(content) < 280, "tweet is too long!" will now behave the same as in Python, allowing up to 280 unicode characters. Asserting on size is also possible if required.
And the extra space would be defined as 4 + size(content) when we have that capability.
I split this into a separate PR because it's a breaking change of len.

Nice! Only have one concern - the size function has a comparatively general name for its functionality - I think it's unintuitive that a function with that name will perform a single function for a single type. However, we could definitely make this a function that works with multiple types later, since the space/padding update will allow users to store even things like lists in accounts.
So I think either size should be renamed to str_size, or we should add it with the knowledge that its API will be more accepting in the future (which should be reflected in the doc comments). Thoughts?

Yep definitely agreed! I've updated the docs to make it less string-specific. I think it makes most sense to use size and support more types in the future, can definitely see that being really valuable. And we should be able to do that without breaking anyone using it for strings, whereas if we use str_size and move to something more general later we'd probably eventually deprecate the string-specific function.

(don't mind me, just changed a variable name for docs <-> code continuity)


Error Pushing Packages to Expo

After the latest release a2520e3d97f08356b950fc29558dc4c49615736 I'm getting an error.
Running on Travis on OSX:
[exp] Invalid Version: undefined
[exp] TypeError: Invalid Version: undefined
    at new SemVer (/Users/travis/build/companyApp/company-ui/node_modules/semver/semver.js:279:11)
    at Function.major (/Users/travis/build/companyApp/company-ui/node_modules/semver/semver.js:551:10)
    at /xdl/src/project/Doctor.js:629:18
    at /Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:4944:15
    at baseForOwn (/Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:3001:24)
    at /Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:4913:18
    at Function.forEach (/Users/travis/build/companyApp/company-ui/node_modules/lodash/lodash.js:9359:14)
    at /xdl/src/project/Doctor.js:619:9
    at Generator.throw (<anonymous>)
    at step (/Users/travis/build/companyApp/company-ui/node_modules/exp/node_modules/xdl/build/project/Doctor.js:615:191)
    at /Users/travis/build/companyApp/company-ui/node_modules/exp/node_modules/xdl/build/project/Doctor.js:615:402
    at <anonymous>
/Users/travis/build/companyApp/company-ui/node_modules/appr/index.js:22
      throw new Error('Failed to publish package to Expo');
      ^
Error: Failed to publish package to Expo
    at publishError (/Users/travis/build/companyApp/company-ui/node_modules/appr/index.js:22:13)
    at ChildProcess.child.on.code (/Users/travis/build/companyApp/company-ui/node_modules/appr/scripts/spawn.js:16:5)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
The command "yarn appr" exited with 1.
cache.2
store build cache

Can you share you package.json and app.json? Cannot replicate in any of my projects, running Travis on Linux.

@jevakallio
package.json:
{
  "name": "foo",
  "version": "0.1.0",
  "private": true,
  "license": "UNLICENSED",
  "devDependencies": {
    "@storybook/addon-actions": "3.2.16",
    "@storybook/addon-links": "3.2.16",
    "@storybook/react-native": "3.2.16",
    "appr": "^1.1.0",
    "axios-mock-adapter": "1.10.0",
    "babel-eslint": "8.0.2",
    "babel-plugin-transform-decorators-legacy": "1.3.4",
    "eslint": "4.11.0",
    "eslint-config-airbnb": "16.1.0",
    "eslint-import-resolver-babel-module": "4.0.0-beta.3",
    "eslint-plugin-import": "2.8.0",
    "eslint-plugin-jsx-a11y": "6.0.2",
    "eslint-plugin-react": "7.5.1",
    "eslint-restricted-globals": "0.1.1",
    "jest-expo": "23.0.0",
    "react-dom": "16.1.1",
    "react-native-dotenv": "0.1.0",
    "react-native-scripts": "1.7.0",
    "react-test-renderer": "16.1.1"
  },
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": {
    "android": "react-native-scripts android",
    "appr": "appr",
    "eject": "react-native-scripts eject",
    "ios": "react-native-scripts ios",
    "lint": "./node_modules/.bin/eslint *.js ./app/**/*.js ./app/**/**/*.js ./app/**/**/**/*.js ./app/**/**/**/**/*.js",
    "start": "react-native-scripts start",
    "storybook": "storybook start -p 7007",
    "setupTravis": "node setupTravis.js",
    "test": "node node_modules/jest/bin/jest.js --watch",
    "testSingleRun": "node node_modules/jest/bin/jest.js"
  },
  "jest": {
    "preset": "jest-expo",
    "collectCoverageFrom": [
      "app/common/stores/**/tests/*.js",
      "app/common/components/**/tests/*.js"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!react-native|react-navigation)/"
    ]
  },
  "dependencies": {
    "axios": "0.17.1",
    "babel-core": "6.26.0",
    "babel-plugin-module-resolver": "3.0.0",
    "base-64": "0.1.0",
    "expo": "23.0.2",
    "mobx": "3.3.2",
    "mobx-persist": "0.4.1",
    "mobx-react": "4.3.5",
    "moment": "2.19.2",
    "prop-types": "15.6.0",
    "react": "16.1.1",
    "react-native": "0.50.4",
    "react-native-checkbox": "2.0.0",
    "react-native-iphone-x-helper": "1.0.1",
    "react-native-loading-spinner-overlay": "0.5.2",
    "react-native-modalbox": "1.4.2",
    "react-native-progress": "3.4.0",
    "react-native-svg": "5.5.1",
    "react-navigation": "https://github.com/bar/react-navigation",
    "utf8": "2.1.2"
  }
}

app.json:
{
  "name": "foo",
  "displayName": "foo",
  "privacy": "unlisted",
  "expo": {
    "sdkVersion": "23.0.0",
    "orientation": "portrait",
    "primaryColor": "#000000",
    "icon": "./app/common/images/logoSquare.png",
    "androidStatusBarColor": "#000000",
    "loading": {
      "hideExponentText": true
    },
    "notification": {
      "color": "#000000",
      "androidMode": "default",
      "icon": "./app/common/images/notificationIcon.png"
    },
    "ios": {
      "splash": {
        "backgroundColor": "#000000",
        "image": "./app/common/images/splash.png",
        "resizeMode": "cover"
      }
    },
    "android": {
      "splash": {
        "backgroundColor": "#000000",
        "mdpi": "./app/common/images/splash.png",
        "resizeMode": "cover"
      }
    },
    "facebookScheme": "bar"
  }
}

@jevakallio I tried on linux instead of OSX, and still get an error. See the app.json, and package.json above
Success. You are now logged in as XXXXXXX
.
[appr] Logged into Expo.
[appr] Preparing project for publish...
[appr] Publishing project into Expo.
[exp]

There is a new version of exp available (47.0.0).
You are currently using exp 44.0.0
Run `npm install -g exp` to get the latest version
[exp]
 Unable to find an existing exp instance for this directory, starting a new one...
[exp]

Warning: You are using npm version 5.5.1. There may be bugs in this version, use it at your own risk. We recommend version 4.6.1.
[exp]

Warning: Not using the Expo fork of react-native. See https://docs.expo.io/.
[exp]

Invalid Version: undefined
[exp]

TypeError: Invalid Version: undefined
    at new SemVer (/home/travis/build/foobarApp/foobar-ui/node_modules/semver/semver.js:279:11)
    at Function.major (/home/travis/build/foobarApp/foobar-ui/node_modules/semver/semver.js:551:10)
    at /xdl/src/project/Doctor.js:629:18
    at /home/travis/build/foobarApp/foobar-ui/node_modules/lodash/lodash.js:4944:15
    at baseForOwn (/home/travis/build/foobarApp/foobar-ui/node_modules/lodash/lodash.js:3001:24)
    at /home/travis/build/foobarApp/foobar-ui/node_modules/lodash/lodash.js:4913:18
    at Function.forEach (/home/travis/build/foobarApp/foobar-ui/node_modules/lodash/lodash.js:9359:14)
    at /xdl/src/project/Doctor.js:619:9
    at Generator.throw (<anonymous>)
    at step (/home/travis/build/foobarApp/foobar-ui/node_modules/exp/node_modules/xdl/build/project/Doctor.js:615:191)
    at /home/travis/build/foobarApp/foobar-ui/node_modules/exp/node_modules/xdl/build/project/Doctor.js:615:402
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
/home/travis/build/foobarApp/foobar-ui/node_modules/appr/index.js:22
      throw new Error('Failed to publish package to Expo');
      ^
Error: Failed to publish package
to Expo
    at publishError (/home/travis/build/foobarApp/foobar-ui/node_modules/appr/index.js:22:13)
    at ChildProcess.child.on.code (/home/travis/build/foobarApp/foobar-ui/node_modules/appr/scripts/spawn.js:16:5)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
error
 Command failed with exit code 1.
The command "yarn appr" exited with 1.

@Sonblind weeeird, not seeing any major issues in your config. I'll have to try to replicate this locally.

Hi @jevakallio, Please let me know what you find. I'd love to use this in our workflow. Thanks!


typo on readme.md

Describe the bug
The readme file name is a typo. It is README.md
Reproduction
N/A
Expected behavior
README.md
System Info
N/A

Additional context
No response
Validations

[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

I don't see any problem with the filename but currently the readme is missing on npm:

Seems like npm run release wasn't triggered before the release which copies the readme file to the vite-plugin-checker package @fi3ework.

my bad. I was wondering why there is no readme preview on npm.

@jhoermann Thanks for reminding!


Test controller.api.* (eg. Facebook's messenger_profile) functions

Hi guys,
I have again a question. How can I test (no clue yet) features of the Facebook Bot, such as this onecontroller.api.messenger_profile.get_messenger_code (there are other controller.api.* features as well).
Based on the examples of you readme, I was not able to run a test like this:
it('the bot\'s get_messenger_code should be a function', () => {
    this.controller.api.messenger_profile.get_messenger_code.should.be.a.Function();
  });

This is the skill (basically the example from the botkit repo):
module.exports = function(controller) {

  // returns the bot's messenger code image
  controller.hears(['code'], 'message_received,facebook_postback', function(bot, message) {

    controller.api.messenger_profile.get_messenger_code(2000, function(err, url) {

      if (!err) {

        const image = {
          attachment: {
            type: 'image',
            payload: {
              url,
            },
          },
        };
        bot.replyWithTyping(message, image);
      }

    });

  });

};

hey @natterstefan , we don't support that function (yet), but you could easily add it using botExtender (see Advanced Usage on readme).
Let me know if you're not able to figure it out, it should be added to the project so you don't need to use botExtender. Feel free to make a PR if you're able to patch it before us.

@amplicity thanks for the hint. I tried it, see:
beforeEach((done) => {
    // mock data
    this.user = {
      id: 'user123',
      name: 'user',
      channel: 'channel',
    };

    // extend the bot w/ some extended features
    const botExtender = (parmBot) => {
      const bot = _.clone(parmBot);
      bot.api = {};
      bot.api.messenger_profile = (data) => {
        bot.reply(message, data.message);
      };
    };

    // mock fb bot
    this.controller = Botmock({
      debug: false,
      log: false,
    });
    this.bot = this.controller.spawn({ type: 'facebook', botExtender });
    skillController(this.controller);

    done();
  });

I still get the following error: Uncaught TypeError: Cannot read property 'messenger_profile' of undefined (see the skill code above).

hey @natterstefan  please exclude _.clone, you should add new functionality to bot entity by reference.

@ihorrusinko good point. I had to disable the esLint for this line, that's why I added it. Still I am not sure if I added/used the botExtender the right way. As - for instance - the get_messenger_code is part of the controller, not the bot (see controller.api.messenger_profile.get_messenger_code).

@natterstefan sorry, was wrong.
botExtender(bot, botkit, config) has few additional params.
you need to add .api. messenger_profile.get_messenger_code  to botkit instance, botkit it's a controller. so it should works as you expected.

@ihorrusinko Aaaah, I should have seen that in your Readme ^^. Looks like this one is working.


feat: Replace default UI font, Arimo to Inter

Pull Request Checklist
Changelog Entry
Description
This PR replaces outdated "Arimo" font with modern "Inter".
Added

[List any new features, functionalities, or additions]

Changed

added ttf file of Inter
removed ttf file of Arimo
replaced references in CSS

Current font:

Inter:

LGTM, Thanks!

Hi!
I'm genuinely interested to know motivation behind this PR.


Add KSA-Covid-Stats

KSA Covid-19 Stats is a mobile-ready web application that highlights relevant Covid-19 statistics (both numerical and graphical) in Saudi Arabia. Utilizes Node.js and Express.js Framework as it's Backend implementation. This application was made possible by procuring COVID data via disease.sh.

Thank you for the kind words. This project of mine was only possible due to your easy to use API. Kudos to you for applying this creative energy to something that positively benefits the society.


Feed-in restrictions

Hello, I have your software running on an ESP32 and use it to read a JK BMS. I pass the required data to my Goodwe 10k inverter and have adapted your software slightly (through trial and error :-))
Since our power grid operator only allows a feed-in of 4000W, on sunny Days i only want to charge the battery when the 4000W grid feed-in has been reached.
I used the following program part from you to read out the watts supplied/delivered into the grid via the Goodwe inverter, this works really well. But I'm having trouble processing the data, so I wanted to ask you if you could help me here.
My approach would be to define a variable that can be between 0 and 25 (this would be my charging current that I pass on to the inverter)
If more than 4000W is now supplied to the network, this variable should increase in steps of 1 every 10 seconds.
If less than 3900W is supplied to the network, this variable should decrease in steps of 1 every 10 seconds.
For the newer Goodwe 20k-et and 30k-et devices, the manufacturer offers the intelligent charging function.
But with this "small" program, my inverter should also work well enough to feed as much as possible into the grid on sunny days,
substitutions:
# --------------------------
# name that will appear in esphome and homeassistant.
  name: bmssolar

# --------------------------------------
# Battery State of Health (SOH) setting:
# Maximum charging cycles is used to calculate the battey SOH, LF280K=6000.0 LF280=3000.0 (decimal is required)
  max_cycles: "6000.0"
# --------------------------------------
# ESP32 CAN/Serail port pins:
# GPIO pins your CAN bus transceiver(TJA1050) is connected to the ESP, note! TX->TX and RX->RX.
#  can_tx_pin: GPIO23
#  can_rx_pin: GPIO22
# GPIO pins your JK-BMS RS485(TTL) is connected to the ESP TX->RX and RX->TX.
  tx_pin: GPIO1
  rx_pin: GPIO3
# --------------------------------------

Thank you very much Josef

esphome:
  name: bmssolar
  friendly_name: bmssolar

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:
  baud_rate: 0

globals:
  - id: can_420_rx
    type: int
    restore_value: no
    initial_value: '0'
  - id: charge_status
    type: std::string
    restore_value: no
    initial_value: '"Startup"'

button:
  - platform: restart
    name: "Restart button"
    id: restart_button
    internal: true

wifi:
  ssid: xxxx
  password: xxxx

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "BmsSolar Fallback Hotspot"
    password: "xxxx

# Enable Home Assistant API
api:
  encryption:
    key: "xxxx
ota:
  password: xxxx

#

uart:
  id: uart_0
  baud_rate: 9600
  rx_buffer_size: 384
  tx_pin: ${tx_pin}
  rx_pin: ${rx_pin}

modbus:
    id: modbus0
    uart_id: uart_0
    send_wait_time: 300ms

modbus_controller:
    id: bms0
    address: 247
    modbus_id: modbus0
    command_throttle: 300ms
    update_interval: 1s

sensor:
  # 1000    Leistung                R    UINT16    2    Watt
  - platform: modbus_controller
    modbus_controller_id: bms0
    name: "Leistung"
    address: 35140
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "W"
    device_class: energy
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 1

Your YAML configuration looks incomplete and misses the important parts. :-) Do you like to sure your complete solution here?


feat(buf_ls): add buf_ls support

Now that support has landed in lspconfig, we can add it here.

Thanks for your work! bufls has been deprecated and will be removed from lspconfig soon. Would you mind also deleting bufls from the mapping?

Would you mind also deleting bufls from the mapping?

done!

This seems to solve this issue. Thanks for your contribution!!
Consider adding something like Closes #488


load an FBX, modify it, then export it

I see that there is a reader and a writer, but it seems like the reader and writer are detached and cannot be converted. This means that for the writer you have to start from a blank object and then perhaps copy across each node or something?
Is there an easy way to read in an FBX file, modify it slightly, then output it again?

What I should ask you is, how much performance and robustness you need? And, what kind of modification do you attempt to?
Readers and writers are implemented so that they can avoid allocation as possible. Readers provide a way to read (or skip) the data sequentially, rather than returning allocated "node" objects. Writers also provide a way to write each attributes or array elements, rather than receiving allocated "node" objects. Consequently, users are required to pass node name and each attribute one by one from a reader to a writer.
If you can accept loading all nodes on a memory at once, then the easiest way will be loading everything into a Tree and writing it using Writer::write_tree.
(The tree type lacks methods to remove nodes, so possibly I should implement such API if you need...)
However, if you are willing to process untrusted or possibly quite big data, then I think you should stick to the raw readers and writers in order to prevent OOM errors. Even allocating "a node" on memory can require gigabytes of buffers.

Thanks for the information, I wasn't aware the allocation would be so high! Essentially I need to load an existing FBX file, modify the animation data within it by changing the times and keyframe data, then write the file back as a new file.  I would also need to modify a few bits of Metadata throughout the file, such a time of creation, author, etc.
I'm having a load of issues with the native FBX library provided by Autodesk (using both the main C API and the Python bindings) and having had great success in writing a re-writing a few tools in rust recently, I was hoping to be able to do it using rust.

Just now I published v0.8.2, which contains some more tree manipulation methods. See the CHANGELOG for the list of the added items, or documentation of the Tree type for the list of available manipulation methods.
I think they enable you to modify or create an arbitrary FBX tree data you want. Once you edited the tree, now you can use Writer::write_tree().
If these methods did not help you, feel free to comment or reopen the issue.


Fixes 1973: Prevents snapshots on non-snapshot enabled repos

Summary
Prevents snapshots on non-snapshot enabled repos
Testing steps
Checklist

[ ] Tested with snapshotting feature disabled and pulp server URL not configured if appropriate

https://issues.redhat.com/browse/HMS-1973


Since #10110 groupby numeric_only=False might not raise if a column name is None

Describe the issue:
#10111 avoids the deprecated GroupBy.dtypes properties by asking the GroupBy.Grouper for its names, which are taken as the set of columns that are being grouped on. Unfortunately, this is only non-ambiguous when the dataframe does not have None as a column name.
The usual case is that someone groups on some list of column names, but one can also group on (say) a function object that assigns each row to a group. In that case, the grouper.names property will return [None] which is unfortunately indistinguishable from the column named None. Now, should one be allowed to have a column whose name is None? Probably not, unfortunately for now it is possible.
Minimal Complete Verifiable Example:
import pandas as pd
import dask.dataframe as dd

df = pd.DataFrame({"a": [1, 2, 3], None: ["a", "b", "c"]})
ddf = dd.from_pandas(df, npartitions=1)

# I expect this to raise NotImplementedError
ddf.groupby(lambda x: x % 2).mean(numeric_only=False).compute()

With 55dfbb0e this raises as expected, but on main it does not.
Unfortunately, this seems hard to fix without going back to actually doing some compute on _meta, but that is probably OK (since it's small).

Thanks @wence-! Just for future readers, IIUC https://github.com/dask/dask/pull/10111 is the PR with the relevant change

Ah sorry, typoed! I updated my comment


slack channel needs id

SLACK_CHANNEL in settings requires the channel id C######## instead of the name.  api says its supported as name, but actual web tests show otherwise.
Would be nice to be able use the name and let the object figure out the id

Mostly fixed in Bf69
Could use some more work though as there are some or corner cases


Fix missed breaks in selects

For some reason these were not caught by staticcheck. I manually noticed there were still breaks inside of selects.

Codecov Report

Merging #265 (f38fdea) into main (a9dcf78) will decrease coverage by 0.07%.
The diff coverage is 20.00%.

@@            Coverage Diff             @@
##             main     #265      +/-   ##
==========================================
- Coverage   57.02%   56.94%   -0.08%
==========================================
  Files          42       42
  Lines        6502     6518      +16
==========================================
+ Hits         3708     3712       +4
- Misses       2267     2277      +10
- Partials      527      529       +2

Impacted Files
Coverage Δ

state/indexer/block/kv/kv.go
54.49% <20.00%> (-0.73%)
:arrow_down:

state/txindex/kv/kv.go
64.72% <20.00%> (-0.87%)
:arrow_down:

Continue to review full report at Codecov.

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


Azure AI Vision -  Image Analysis TypeSpec files

Data Plane API - Pull Request

We are creating new auto-generated SDKs for Image Analysis REST APIs 4.0, currently in public preview (link to REST spec and public docs). This is the first draft PR for checking in the relevant TypeSpec files. I will publish the PR after addressing any errors/warnings.
API Info: The Basics
Most of the information about your service should be captured in the issue that serves as your API Spec engagement record.

Link to API Spec engagement record issue:  I will provide the link once I have one.

Is this review for (select one):

[ ] a private preview
[x] a public preview
[ ] GA release

Change Scope
This section will help us focus on the specific parts of your API that are new or have been modified. Please share a link to the design document for the new APIs, a link to the previous API Spec document (if applicable), and the root paths that have been updated.

Design Document: We don't have on.
Previous API Spec Doc: None.
Updated paths: This is a new SDK. All new TypeSpec files.

Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.
Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
Swagger-Suppression-Process to get approval.
❔Got questions? Need additional info?? We are here to help!

 Contact us!
The Azure API Review Board is dedicated to helping you create amazing APIs. You can read about our mission and learn more about our process on our wiki.

💬 Teams Channel
💌 email

Click here for links to tools, specs, guidelines & other good stuff
Tooling

Open API validation tools were run on this PR.  If applicable, please see https://eng.ms/docs/products/azure-developer-experience/design/api-review to pick a review meeting.

/azp run

This seems a new preview api-version (2023-04-01-preview, seems a new service as well?), and I didn't see the link to review issue. If applicable, please see https://eng.ms/docs/products/azure-developer-experience/design/api-review to pick a review meeting.
If this is part of UnifiedVision, we probably don't need a full review meeting. However, we may need to figure out how to organize the OpenAPI 2.0 JSONs. And we probably need to make sure the JSON generated here be compatible from that in UnifiedVision.

@weidongxu-microsoft for some reason GitHub does not allow me to reply directly to your post above. To answer your questions:
(1) Here is the link to the Azure SDK issue (it's buried somewhere in the history of this PR): https://github.com/Azure/azure-sdk/issues/6809 . It includes a link to samples (currently only Python & Java), and links to apiview for Java, Python, C# and TypeSpec. Tools issues are blocking C# and JS SDK builds in this PR. The C# apiview is from a PR by @rhurey where he modified the auto-gen C# SDK to support overloads of the operator methods.
(2)  In terms of API version (aka service version), let's discuss this at the SDK review (Nov. 6), or over IM. There will be a new API version for GA of Image Analysis.
(3) We have tests for the SDK, and we do manual inspections to make sure the Image Analysis Swagger written by the Unified Vision service team, matches the new TypeSpec files we wrote to auto-generate the SDK.

/azp run

/azp run

/azp run

/azp run

/azp run

/azp run

/azp run

@yangyuan @MushMal ready for your review. Thanks!

/azp run


Skip full CI/CD for doc-only changes

Describe the feature you'd like supported
To optimize the build pipeline, skip running a full build and test for doc-only changes
Proposed solution
https://stackoverflow.com/questions/66751567/return-passing-status-on-github-workflow-when-using-paths-ignore
Additional context
No response

https://github.com/marketplace/actions/skip-duplicate-actions looks like it should work for this.


Is there any functionality about edit existing data?

I carefully read your paper, ramblr.
It was nice and novel paper!
In the paper, you commented that ramblr has functions about appending the new data.
but there's no comment about editing existing data.
(For example, I want edit existing string array 'hello' to 'hello world',)
Is there any feature about this?
Thanks!

You can do it, but I don't think I implemented that... it should be trivial to implement this functionality by yourself if you know what to do :)


Fix route in static_file example

According to the example, the route should be /src/* but this returns a 404 when going to e.g. http://localhost:8080/dir/Cargo.toml, and even a panic when going to http://localhost:8080/dir/dir/Cargo.toml:
   3: core::option::Option<T>::unwrap
             at /build/rustc-1.68.2-src/library/core/src/option.rs:823:21
   4: <tide::fs::serve_dir::ServeDir as tide::endpoint::Endpoint<State>>::call::{{closure}}
             at /home/sijmen/.cargo/registry/src/github.com-1ecc6299db9ec823/tide-0.16.0/src/fs/serve_dir.rs:30:20

Maybe replacing that unwrap with something more graceful is a good idea too?

I'm dumb, was looking at the main branch while I should've looked at version 0.16.0


Headings level increasing gradually

This might make the document a bit more readable, since it follows natural increasing of headings level

Thanks


body on kit-site is missing font 'Overpass'

Just noticed this while reading the kit-docs.

So the body on kit-site looks like:

While on the svelte-site we have the 'Overpass' as body-font:

The SvelteKit site has a line that's not present on the svelte.dev site:
https://github.com/sveltejs/sites/blob/766775deadec133b90df36878bde18fd423e6552/packages/site-kit/base.css#L63
The svelte.dev site for reference:
https://github.com/sveltejs/site-kit/blob/01d83baee868053b01b560bc92ee34967616113f/base.css#L61
It looks like @Rich-Harris added this in https://github.com/sveltejs/sites/commit/2f03e65da822d07c0f9f0e0ca2eb7127e47e7990

Removing the extra line make it choose a better looking font, but totally screws up the font sizing, so it'll take some tweaking

Removing the extra line make it choose a better looking font, but totally screws up the font sizing, so it'll take some tweaking

I think the extra line is because the custom property --fontisn't defined elsewhere. (i.e. :root, .theme-default or .typo-default)
I made the base of this css-structure long ago (around svelte 3 upcoming) to my best knowledge.
In the meantime I had to recognized on my personal homepage (using similar techniques) that there seems to be something wrong with the font-shortcut using css-vars (line 139). I guess this is responsible for screwing up font-sizing.
I was able to work around that with either:
/* using a fixed value for line-height – not really what I wanted */
body {
	font: 300 var(--h4)/1.5 var(--font);
	...
}

... or splitting the font-shortcut:
body {
	font-family: var(--font);
	font-size: var(--h4);
	line-height: var(--lh);
	font-weight: 300;
	...
}

😳 Where can I create issues for bugs in css?

Hi
I think I figured out the problem.
kit.svelte.dev has base.css, line 138:
font: 400 var(--h4) / var(--lh) var(--font-body);
The matching style from svelte.dev:
font: 300 var(--h4) / var(--lh) var(--font);
--font-body is used for body tag. All other css uses --font. Changing it to match seems to fix without screwing up sizing.
svelte.dev is using site-kit 1.4.0, which is why it has not been affected.
package.json


Move to ES6

Rewrote the package in ES6.

npm package is distributed in ES5 converted by Babel
Compatible API
Remove coverall integration (due to mocha-lcov-reporter issue)

Coverage decreased (-11.03%) to 45.732% when pulling ce0530907f4dd0b351007b6e424f609e1fb839ae on migrate-to-es6 into ff8a59569b5f0df68ed5a331fd59830aa82b54d8 on master.

Coverage increased (+1.7%) to 58.491% when pulling fbef2823faac65e5a005cf077ab9d04980f846d7 on migrate-to-es6 into ff8a59569b5f0df68ed5a331fd59830aa82b54d8 on master.

Coverage increased (+1.7%) to 58.491% when pulling 5e1816364faf14bac0a244d96db174ef33eadbb7 on migrate-to-es6 into ff8a59569b5f0df68ed5a331fd59830aa82b54d8 on master.

@watilde Thank you so much for reviewing!


⚠ ClamAV has degraded performance

In ae7da80, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 198 ms

Resolved: ClamAV performance has improved in 9949d18.


feat: Added log package

Closes #73
Proposed Changes
Briefly describe your proposed changes:
Added log package to solve issue https://github.com/InfluxCommunity/influxdb3-go/issues/73
Checklist

[x] CHANGELOG.md updated
[x] Rebased/mergeable
[x] A test has been added if appropriate
[x] Tests pass
[x] Commit messages are conventional
[x] Sign CLA (if not already signed)

@bednar Thought about just adding a simple logger but then I wanted to follow the V2 standards :) . So I like this simple implementation so modified my commit.

Should we add log level to ClientConfig or should we override the defaults like this on the user side influxdb3.ConfigureLogger(map[string]bool{"debug": false, "info": true, "warn": false, "error": true})

Good catch! 👍 You are right it should be a part of ClientConfig.

Should we add log level to ClientConfig or should we override the defaults like this on the user side influxdb3.ConfigureLogger(map[string]bool{"debug": false, "info": true, "warn": false, "error": true})

Good catch! 👍 You are right it should be a part of ClientConfig.

@bednar could you verify?

For simplify our codebase we can use default logger:

@bednar Could you have a look?

I think the PR needs to be rebased or main merged into it to use fixed CI and have workflow check pass.
Code coverage check will probably fail because code coverage will decrease as there is quite a few lines not covered by unit tests (#80), but that could be ignored for now...


added customer category to sale line view

LGTM

I think group by would be really expensive especially on all the non indexed columns

I can't think of how not to use an aggregate, which necessitates a group by.

I can live with 6 seconds difference.
Planning time: 12.698 ms
Execution time: 17487.460 ms ()with group by)
Planning time: 5.158 ms
Execution time: 11407.794 ms (without group by)


(BKR-865) Modularize vmpooler hypervisor

Separate vmpooler hypervisor to an external module: beaker-vmpooler.

[ ] Review and publish beaker beaker-vmpooler
[ ] CI should pass on this PR once the module is published
[ ] Review and merge this PR

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3893/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3909/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3918/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3927/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3931/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3946/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3955/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3956/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3958/

[ci skip]

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3960/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3961/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3962/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3963/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3964/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3979/

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3981/

@rishijavia you're going to have to cleanup your git history for this PR. What's up with the revert commit?

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3986/

@rishijavia looks like a transient. The BFA caught it, so we're good to re-kick, so I'll do that now.
@puppetlabs-jenkins retest this please

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3987/

@kevpl similar error, was not able to checkout PR ref in one of the CI pipelines. It was able to do the same in other pipelines, so i take its another transient failure. Kicking CI again.
@puppetlabs-jenkins retest this please

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3988/


Lokalise: Translations update

This pull request was initiated by Lokalise (user Peter Murray) at 2021-01-21 01:42:29

Test errors found. See https://jenkins-aws.indexdata.com/job/folio-org/job/ui-plugin-find-package-title/job/PR-39/1/

Test errors found. See https://jenkins-aws.indexdata.com/job/folio-org/job/ui-plugin-find-package-title/job/PR-39/1/


Explanation lacks sufficient specificity to ensure proper implementation

This one really puzzles me and causes me to wonder if I am missing something fundamental, if so, my apologies.
"...For an explanation of these values, see the SCSI-3 specification..."
Which one (document version, there are many)? Which section?
If these values are used by the OS, then a proper explanation of the requirements should be on this page including state machines and psuedo-code for each value (e.g. SRB_SIMPLE_TAG_REQUEST, etc.) reflecting the expectations of the OS.
Looking at sample and existing drivers, these values are largely ignored resulting in asynchronous completion of IRPs with mostly indeterminant order.

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

ID: 32ffba3f-70cc-e42c-e0fe-bfb584b8a8eb
Version Independent ID: 44ed080b-e7f2-cbc0-fb4b-9e260abd593c
Content: Storport's Interface with Storport Miniport Drivers
Content Source: windows-driver-docs-pr/storage/storport-s-interface-with-storport-miniport-drivers.md
Product: windows-hardware
GitHub Login: @windows-driver-content
Microsoft Alias: windowsdriverdev

@lorihollasch, please add this one to your queue. I missed reassigning it when the writer of record left the team.

@BenWestbrook , I was finally able to update this page with the details that were missing. Thanks for reporting this, and apologies for the slow response!


Terminal extension not launching terminal

Ref: Conversation #2772 / Roman

+1
10.9.5
the latest version.
not launching terminal, if iterm2 not installed. Asking for the location of iterm2.

If you are having this issue, can you try setting the terminal in the extension settings to iTerm2, press OK, then open the settings again and set it back to Terminal. Does it make a difference?

runs both iterm2 and terminal.
and selected string inserted into the terminal. ( it's google translate:) )

Any AppleScript gurus who can figure out how this script is doing that?

“setting the terminal in the extension settings to iTerm2, press OK, then open the settings again and set it back to Terminal”
Nothing changes.
Have tried deleting the iTerm2 part of the script and the Option in Config.plist, it doesn't work as well. The terminal part of the script works well in AppleScript App(changed {popclip text} to 'cd ~'), but won't work in the extension. Can't figure out why. :(

Ref: Conversation #3362 / Philip

To those having issues with th Terminal extension: I've just update the extension with a fix, which I think is working. Here: http://pilotmoon.com/popclip/extensions/page/Terminal


New-AzDeployment: Cannot retrieve the dynamic parameters for the cmdlet

Bicep version
Bicep CLI version 0.22.6 (d62b94db31)
Describe the bug
When attempting to use a dynamic variable with New-AzDeployment I received the following error 'New-AzDeployment: Cannot retrieve the dynamic parameters for the cmdlet. Error parsing boolean value. Path '', line 1, position 1.'
Az modules - 10.3.0
To Reproduce
Steps to reproduce the behavior:
Templates
repro.zip
command -
New-AzDeployment -location usgovvirginia -whatif -TemplateFile .\repro.bicep -TemplateParameterFile .\repro.bicep -region 'ugv' -name what-if_tagtest_dev_ugv
Additional context
I was testing user defined types and ran into the same issue in out pipeline where dynamic variables were not working properly when you added a user defined type. Reproduced on my machine and confirmed. Updated to the latest version of Bicep and tested again but now I get the error in both scenarios.

Updates:
Removed all versions of Az modules, found the module causing issues was the Az.Resources module.
Working module versions
Get-Module -Name Az, Az.Resources -ListAvailable | select Name, Version
Name         Version
----         -------
Az           10.3.0
Az.Resources 6.10.0

Bicep Version 0.22.6
I am able to deploy templates with User Defined Types if no dynamic variables are used.
If I remove the Types, the dynamic functionality works again successfully.
I successfully tested using the ReadEnvironmentVariables() function as an alternative to passing the dynamic variables at the command line.

I have the same issue, I have the same versions of Powershell modules and I've tried both the latest and previous Bicep release. I have a main file which references a types file. My main file has a bicepparam file attached and requires some user defined type parameters, this gives me

with version 0.21.1:
New-AzDeployment: Cannot retrieve the dynamic parameters for the cmdlet. Object reference not set to an instance of an object.

-with version 0.22.6:
Unhandled exception. System.ArgumentException: Invalid type expression encountered.    at Bicep.Core.Emit.TemplateWriter.TypePropertiesForTypeExpression(TypeExpression typeExpression)    at Bicep.Core.Emit.TemplateWriter.<>c__DisplayClass27_0.<EmitParameter>b__0()    at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WriteObjectWithPosition(IPositionable sourcePosition, Action propertiesFunc)    at Bicep.Core.Emit.ExpressionEmitter.EmitObject(Action writePropertiesFunc, IPositionable position)    at Bicep.Core.Emit.ExpressionEmitter.<>c__DisplayClass32_0.<EmitObjectProperty>b__0()    at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WritePropertyWithPosition(IPositionable keyPosition, String name, Action valueFunc)    at Bicep.Core.Emit.ExpressionEmitter.EmitProperty(String propertyName, Action writeValueFunc, IPositionable position)    at Bicep.Core.Emit.ExpressionEmitter.EmitObjectProperty(String propertyName, Action writePropertiesFunc, IPositionable position)    at Bicep.Core.Emit.TemplateWriter.EmitParameter(ExpressionEmitter emitter, DeclaredParameterExpression parameter)    at Bicep.Core.Emit.TemplateWriter.<>c__DisplayClass23_0.<EmitParametersIfPresent>b__0()    at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WriteObjectWithPosition(IPositionable sourcePosition, Action propertiesFunc)    at Bicep.Core.Emit.ExpressionEmitter.EmitObject(Action writePropertiesFunc, IPositionable position)    at Bicep.Core.Emit.ExpressionEmitter.<>c__DisplayClass32_0.<EmitObjectProperty>b__0()    at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WritePropertyWithPosition(IPositionable keyPosition, String name, Action valueFunc)    at Bicep.Core.Emit.ExpressionEmitter.EmitProperty(String propertyName, Action writeValueFunc, IPositionable position)    at Bicep.Core.Emit.ExpressionEmitter.EmitObjectProperty(String propertyName, Action writePropertiesFunc, IPositionable position)    at Bicep.Core.Emit.TemplateWriter.EmitParametersIfPresent(ExpressionEmitter emitter, ImmutableArray1 parameters)
at Bicep.Core.Emit.TemplateWriter.GenerateTemplateWithoutHash(PositionTrackingJsonTextWriter jsonWriter)
at Bicep.Core.Emit.TemplateWriter.Write(SourceAwareJsonTextWriter writer)
at Bicep.Core.Emit.TemplateEmitter.<>c__DisplayClass10_0.b__0()
at Bicep.Core.Emit.TemplateEmitter.EmitOrFail(Func1 write)    at Bicep.Core.Emit.TemplateEmitter.Emit(TextWriter textWriter)    at Bicep.Core.Emit.TemplateEmitter.Emit(Stream stream)    at Bicep.Cli.Services.CompilationWriter.ToStream(SemanticModel model, Stream stream)    at Bicep.Cli.Services.CompilationWriter.ToFile(SemanticModel model, String outputPath)    at Bicep.Cli.Services.CompilationWriter.ToFile(Compilation compilation, String outputPath)    at Bicep.Cli.Commands.BuildCommand.RunAsync(BuildArguments args)    at Bicep.Cli.Program.RunAsync(String[] args)    at Bicep.Cli.Program.Main(String[] args)    at Bicep.Cli.Program.<Main>(String[] args)

I'm getting a "A parameter cannot be found that matches parameter name" exception for optional parameters.

Some observations
Repro 1
main.bicep:
type requiredTags = {
  foo: bool
}

//@description('Required. Tags that are should be deployed for all subscriptions')
param tags requiredTags

main.bicepparam
using 'main.bicep'

param tags = {
  foo: true
}

Result:
New-AzResourceGroupDeployment -ResourceGroupName ant-test -TemplateParameterFile /Users/ant/Desktop/issue12112/main.bicepparam
WARNING: /Users/ant/Desktop/issue12112/main.bicep(6,7) : Warning no-unused-params: Parameter "tags" is declared but never used. [https://aka.ms/bicep/linter/no-unused-params]

New-AzResourceGroupDeployment: Cannot retrieve the dynamic parameters for the cmdlet. Object reference not set to an instance of an object.

Repro 2
main.bicep:
type requiredTags = {
  foo: bool
}

@description('Required. Tags that are should be deployed for all subscriptions')
param tags requiredTags

main.bicepparam
using 'main.bicep'

param tags = {
  foo: true
}

Result:
New-AzResourceGroupDeployment -ResourceGroupName ant-test -TemplateParameterFile /Users/ant/Desktop/issue12112/main.bicepparam
WARNING: /Users/ant/Desktop/issue12112/main.bicep(6,7) : Warning no-unused-params: Parameter "tags" is declared but never used. [https://aka.ms/bicep/linter/no-unused-params]

WARNING: /Users/ant/Desktop/issue12112/main.bicep(6,7) : Warning no-unused-params: Parameter "tags" is declared but never used. [https://aka.ms/bicep/linter/no-unused-params]

WARNING: /Users/ant/Desktop/issue12112/main.bicep(6,7) : Warning no-unused-params: Parameter "tags" is declared but never used. [https://aka.ms/bicep/linter/no-unused-params]

WARNING: /Users/ant/Desktop/issue12112/main.bicep(6,7) : Warning no-unused-params: Parameter "tags" is declared but never used. [https://aka.ms/bicep/linter/no-unused-params]

New-AzResourceGroupDeployment: Additional content found in JSON reference object. A JSON reference object should only have a $ref property. Path 'tags.metadata'.

Hypothesis
The JSON parser that AzPwsh is using is attempting to follow $ref statements and present a normalized view of the JSON, rather than treating them as properties named $ref.

Closed as it is fixed in the Powershell release. Please reopen if the same issue persists after the newest powershell release.

I seem to still run into this issue introducing User Defined Types to my Bicep template using New-AzResourceGroupDeployment.
Command:
New-AzResourceGroupDeployment -ResourceGroupName validation-rg -TemplateFile deploy.bicep -TemplateParameterFile parameters.json -Tags @{ RemoveModule = "ModuleName" }
Error:
New-AzResourceGroupDeployment: A parameter cannot be found that matches parameter name 'Tags'.
Versions:
Bicep CLI version 0.22.6 (d62b94db31)
Az: 10.4.1
Az.Resources: 6.11.2
When I use Azure CLI, basically the same command it runs succesfully:
az deployment group create -g validation-rg --template-file deploy.json --parameters @parameters.json tags='{\"RemoveModule\":\"ModuleName\"}'
Unfortunately my whole template ci/cd process is based on Azure PowerShell, so would be helpful if this can be resolved. I usually run this via AzurePowerShell@5 (latestVersion) but I tried to pin the versions mentioned in this issue as well, without luck.
If any other logs are needed, please let me know.

@rbnmk Sorry, should have clarified: It should be available during the NEXT powershell release, which is stated to be around 11/17. I would wait until then to try again, and to keep an eye on when the next version is released from their github page: https://github.com/PowerShell/PowerShell/releases
Thank you!


Running cljs tests with cljc source

Maybe this is an artifact of some of the other tooling involved, but I am getting a strange behavior when I attempt to compile cljs speclj tests from cljc (reader conditional) source. When I attempt to build the tests (using cljsbuild, so lein cljsbuild once dev) I get the old clojure.lang.Compiler$CompilerException: java.lang.ClassNotFoundException: speclj.platform.SpecFailure error, but then it builds, and any test commands execute properly. If the source is just a .cljs file, this does not happen.
Built an example repo to illustrate this here: https://github.com/milt/spectest
To see the error run lein cljsbuild once dev-cljc. For a normal cljs-only build that works fine, lein cljsbuild once dev-cljs.

I have the same error when running tests from the LightTable repl.
In my opinion, this behavior is associated with how speclj determines what language we use ClojureScript or Clojure.
The namespace «speclj.core» have the following code:
(def ^:private ^:no-doc cljs? (boolean (find-ns 'cljs.analyzer)))

(defmacro ^:no-doc -new-failure [message]
  (if cljs? `(speclj.platform.SpecFailure. ~message) `(speclj.SpecFailure. ~message)))

In the first line Speclj determines a language (ClojureScript or Clojure) is used, based on the presence of the loaded namespace named 'cljs.analyzer. That is, for ClojureScript value cljs? It must be true, and for code in Clojure - false.
In the second line variable cljs? is used to select the implementation SpecFailure, which for Clojure and ClojureScript located in different namespace.
The problem of this implementation cljs? is for example IDE LightTable in the repl mode itself uses and loads ns cljs.analyzer, no matter what code (Clojure or ClojureScript) it executes.
I can suggest the following workaround code for Clojure tests:
(remove-ns 'cljs.analyzer)

(ns test.spec
   (:require
    [speclj.core :refer :all :exclude [with]]))

(require '[cljs.analyzer])

(describe "test"
          (it "is true"
              (should= 2 2)))

In the spec-files at first remove cljs.analyzer, that cljs? It was calculated with the value false.
And then restored as it was.

also getting this