silent:true on model.set() in the bind() method

Hi,
Great work, I'm using this project in my app. I had to add silent:true to the model.set() call when you're setting isValid in the bind() method.
Without silent:true the model's change event fired twice which caused my code to try to add the model to the collection twice.
model.set({
isValid: isValid},
{silent:true});
You may want to add this to the code because it's probably not desirable to have isValid trigger the change event
See my fork here :
https://github.com/GarethElms/backbone.validation/commit/d2f03bee80676b1ccea03790e051ac34018bdc6c

Hi,
I'm aware of this, and it is not very desirable as you say. However, for the validation to work with for instance Backbone.Modelbinding, we need to notify about the change to the isValid attribute (e.g. if you have bound enabling/disabling of a button to the isValid attribute).
Could this perhaps be configured in some way?

Ah I see. Perhaps isValid shouldn't exist as an attribute and should instead be a custom model event that a view can bind to. I've just tested it and it all works that way, the view knows when the model is valid or invalid and can react accordingly.
So inside bind() you have :
model.trigger('isValid', model);
and
model.trigger('isInvalid', model);

Then you would have to manually hook up code to enable/disable buttons as the automatic model binding relies on the "change:isValid" (or "change:whatever") events.
However, I am thinking that it might be the right thing to do.
Then we can set isValid silently, and raise the events that you proposed.

I've looked into the model binding plugin and I know what you mean now.
I guess a solution I'd be happy with would be to change the model binding plugin to be able to bind to custom triggers (in addition to attribute changes). For example  :

Then the validation plugin could raise the "isValidChange" event with the first parameter being a boolean to indicate the validation state eg;
model.trigger('isValidChange', true, model);
The model binding plugin's convention would be to take the first parameter passed to the event handler as the value being acted on.
This would be out of the way of the view's responsibility to monitor the model change event, especially useful if the model binding plugin is not being used. I need to monitor the model change event from the view so that I can close the modal window in which my view is contained, and then add the model to the collection.
My view still needs to know if the model is valid when it handles the change event. So I've changed the validation plugin to manage an isValid property on the model directly (not a managed attribute using get/set).
I'm still quite new to backbone and working my way through it, so I hope the above is not going over old ground.

This issue is causing problems for me too.  I've had to hack my local copy to add {silent: true} to my copy to avoid a host of problems with change callbacks in my application.  It would be great to have this fixed at the source.

I think the core problem here is that the model binding plugin expects an isValid model attribute which is forcing the validation plugin to conform. isValid is not really a model attribute; it's never validated, persisted or displayed. Seems to me that isValid is only an attribute so that model binding can bind to the change event - but we could use a custom event for that. Of course I could be missing something but that's what I think at the mo

Yep, definitively need to fix this. I do agree with @GarethElms that the isValid attribute is not really part of the model, and should not trigger any change event.
I have opened an issue over at Backbone.Modelbinding, and would like to get some input from Derick Bailey before deciding on how to fix this, so we can make everybody happy.

FYI - v0.4.3 of my ModelBinding plugin has been released and now supports the data-bind="visible event:isValidChanged" event binding syntax.
If someone has a chance, I'd love to get feedback on whether or not the changes I put in place work correctly.

I've made some changes. In short, the 'isValid' attribute is removed in favor for an isValid() method on the model (This is more aligned with the model's isNew() method etc.).
The model triggers two events:

'validated' with true as argument when model is valid or 'validated' with false as argument when model is invalid
'validated:valid' when model is valid or 'validated:invalid' when model is invalid

What do you think?
Should there be any more arguments passed along with the events?

Great I'm looking at this now having a few problems with validation probably with my code though, I'll report back shortly

Seems that the model is only invalid if the last validation method returned a value. I've added the //ELMS line below which seems to make it work..
for (var changedAttr in attrs) {
    error = validateAttr(model, changedAttr, attrs[changedAttr]);
    if (error) {
    isValid = false; //ELMS
        invalidFn(view, changedAttr, error, selector + changedAttr);
    } else {
        validFn(view, changedAttr, selector + changedAttr);
    }
}

Oh, nice catch. Will fix it.

Perhaps I'm using it wrong, but I had a problem when calling model.save() as it would still execute backbone.sync() when there were actually errors on the model. This was because validate() had returned "", the final value of the error var.
In the validate() method the error var would be "" if a subsequent validation method succeeded after a previous validation method had failed. isValid would be correctly false and the valid/invalid callbacks have fired but the method would return "", meaning that model.save() (for example) would think validation was successful and carry on saving.
I made a change so that validate() returns return isValid == false; instead which works on my form eg;
model.validate = function(attrs) {alert("1");
    if(!attrs){
        return model.validate.call(model, _.extend(getValidatedAttrs(model), model.toJSON()));
    }

    var error;
    isValid = true;

    for (var changedAttr in attrs) {
        if (error = validateAttr(model, changedAttr, attrs[changedAttr])) {
            isValid = false;
            invalidFn(view, changedAttr, error, selector);
        } else {
            validFn(view, changedAttr, selector);
        }
    }

    if (isValid) {
        for (var validatedAttr in model.validation) {
            if (_.isUndefined(attrs[validatedAttr]) && validateAttr(model, validatedAttr, model.get(validatedAttr))) {
                isValid = false;
                break;
            }
        }
    }

    model.trigger('validated', isValid);
    model.trigger('validated:' + (isValid ? 'valid' : 'invalid'));

    return isValid == false;
};

Sorry about that. Hopefully fixed now.

Spot on mate, it's working for me now thanks. I'm diving into the model binding plugin now so much to learn!

Awesome! Will close this after I've merged the changes into master. Thanks for your contribution to this project!

It's a pleasure thanks for creating it

I know this issue is closed now but I've made a useful changed so that the new validated events pass in an array of invalid attrs as an argument. This allows my view to handle the invalid event and then call focus() on the first (or any) invalid attribute's field. Makes it a nice UI experience if the first erroneous field automatically gets focus. I'll re-fork this project and put it in there but here's the change :
model.validate = function(attrs) {
    if(!attrs){
        return model.validate.call(model, _.extend(getValidatedAttrs(model), model.toJSON()));
    }

    var result = [];
    isValid = true;
    var invalidAttrs = [];

    for (var changedAttr in attrs) {
        var error = validateAttr(model, changedAttr, attrs[changedAttr]);
        if (error) {
            result.push(error);
            invalidAttrs.push(changedAttr);
            isValid = false;
            invalidFn(view, changedAttr, error, selector);
        } else {
            validFn(view, changedAttr, selector);
        }
    }

    if (isValid) {
        for (var validatedAttr in model.validation) {
            if (_.isUndefined(attrs[validatedAttr]) && validateAttr(model, validatedAttr, model.get(validatedAttr))) {
                isValid = false;
                break;
            }
        }
    }

    model.trigger('validated', isValid, invalidAttrs);
    model.trigger('validated:' + (isValid ? 'valid' : 'invalid'), invalidAttrs);

    if (result.length === 1) {
        return result[0];
    }
    if (result.length > 1) {
        return result;
    }
};

Had to fix some other issues, so I'm adding this as well.


Fix #21631 by improving error messages

Fixes Microsoft/vcpkg#21631
Fundamentally, this bad experience was driven by trying to use the generic argument parser for two different commands based on hidden runtime information. I've chosen to resolve this issue by accepting the superset of behavior and provide more specific error messages when the superset does not apply to this case.
Before:
/workspaces/manifest $ vcpkg install zlib
Error: 'install' requires 0 arguments, but 1 were provided.
Example:
  vcpkg install --triplet x64-windows

Options:
  --dry-run                       Do not actually build or install
  --head                          Install the libraries on the command line using the latest
                                  upstream sources
...

After:
/workspaces/manifest $ vcpkg install zlib
Error: In manifest mode, `vcpkg install` does not support individual package arguments.
To install additional packages, edit vcpkg.json and then run `vcpkg install` without any package arguments.
See https://github.com/Microsoft/vcpkg/tree/master/docs/users/manifest.md for more information.
Using manifest file at /workspaces/manifest/vcpkg.json.

Example:
  vcpkg install --triplet x64-windows

Options:
  --dry-run                       Do not actually build or install
  --head                          Install the libraries on the command line using the latest
                                  upstream sources (classic mode)
...

Hmmm this is an improvement but it leaves the help block very confused :(. I understand truly fixing that is going to require a more extensive overhaul though :(

I tried to minimize the confusion of the help block by adding a note for the "exclusive" options (head, editable, no-default-features, feature)


#reprocess! does not function as described when split processing

The README says this:

Take note, normal reprocess! does not accept styles as arguments anymore.
https://github.com/jrgifford/delayed_paperclip#reprocess-without-delay

That's not entirely accurate, as Delayed Paperclip doesn't appear to touch this method.  This happens to work as expected, though, when not split processing - but fails when split processing.
Paperclip's #reprocess! method accepts zero or more style arguments.  The caveat, though, is that zero arguments means "all styles", without regard for whatever styles you've passed to the :only_process option on the Paperclip attachment.
The end result here is that #reprocess! does not function as expected when split processing, and called without arguments, will end up processing the delayed styles twice.  Once immediately, and then again delayed.  To get the behavior that one would expect when split processing, you'd need to call #reprocess! with the :only_process value on the attachment.
I'm happy to work up a PR to either fix the documentation or Delayed Paperclip, but I'm not sure what direction to head in.  Should we alias_method_chain #reprocess! to call the original with the styles passed to :only_process when split processing?  That would get us the expected behavior when split processing.

Thank you for this! I was going crazy trying to figure out why my images were being processed twice. At the very least the delayed_paperclip documentation could be updated to reflect the need for arguments in #reprocess!. It would be great if #reprocess! would just honor the existing only_process array but I can work with either solution.


Does this work on debian 10?

I'm getting errors so not sure if i need to try and work through or if its not supported?
gpg: keybox '/tmp/tmp54yhp7bp/pubring.gpg' created
gpg: connecting dirmngr at '/tmp/tmp54yhp7bp/S.dirmngr' failed: IPC connect call failed
gpg: keyserver receive failed: No dirmngr

Hi,
Since there is a .deb package, this should work on Debian also.
Is this the error that occurs while adding the PPA? If yes, get the binary from releases and let me know.
I will try on Debian VM just to confirm.

thanks, i installed from .deb and now getting
error loading Python lib '/usr/bin/libpython3.8.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/bin/libpython3.8.so.1.0)

Try updating or upgrading your system packages.
If that doesn't solve it automatically please look for upgrading GLIBC_2.9

Hi,
Do you still have this issue?

It didn't so I gave up
Will try again in the future hopefully when its all sorted


Stop re-centering world on tile update

Maybe there's a better way to do this, but I can't place 3D objects on top of the map in world coordinates (say, a monster 4 units away from the player in world units) because the camera / player is reset back to 0,0,0, when he moves off the screen and the tiles are dynamically loaded.
I guess you could either not reset the camera/player position, or maybe we need a function that converts lat/lng to world coordinates based on the current player location--and then those game objects can have their world position updated based on their lat/lng whenever the camera resets?

well the easiest way to solve that is to make any world object, a child to the its tile but still yea, there should be an option to disable that.
I mean it's there just so that people cannot walk into the float.max but majority of users probably won't need that anyway.

Ah I get it--well maybe you should make it a checkbox option in the inspector. I can see uses for both ways.

pushed this on dev branch, can you please let me know if you try it out?

pushed on master branch, it's optional now


After i trained this mode, how to use it?

After i train this mode, how to use it?

The checkpoints are saved at lightning_logs folder, you can load the experiment and then get the model.
from torch_scae_experiments.mnist.train import SCAEMNIST

# load the checkpoint file at ./lightning_logs/version_0/checkpoints/
# change the version number and epoch number accordingly
experiment = SCAEMNIST.load_from_checkpoint("/path/to/lightning_logs/version_0/checkpoints/epoch=0.ckpt")
model = experiment.scae

It uses PyTorch Lightning library, you can check the docs for further details.
https://pytorch-lightning.readthedocs.io/en/latest/weights_loading.html


Datasource Direct DB Connection not staying enabled

Describe the bug
When modifying the datasource to enable Direct DB Connection, I can select the MySQL database, and when saving it shows successful, but when going back into the settings, it shows the Direct DB is not enabled.
Expected behavior
Direct DB Connection showing enabled
Screenshots

Software versions

Grafana
Zabbix
Grafana-Zabbix Plugin

6.2.5
4.2.3
3.10.2

I have the same problem.

Same here.

Duplicated #731


Look into using hooks for console service calls to encapsulate the abortController logic

Currently the components that use the console service need to handle their own AbortController which seems like a pain.

There's not a great way to handle this since these hooks would be conditionally called, which isn't isn't valid for hooks.


Fix windows panic on os.Rename when target file exists

Try to delete it first, but only on windows since it isn't atomic at all.

This means it's no longer atomic :( Looks like https://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx is one way to make this atomic on windows. I don't have a windows machine handy, but I think we should attempt to build an atomic version of this before we give up and go the os.Remove route.

Yeah, I agree about it not being very good.. I should probably just have opened an issue instead..
Related golang issue planned for  go1.5:  https://github.com/golang/go/issues/8914


Light SQL Color Theme error: white text on white background

SQL Operations Studio Version: sqlops 0.23.6 (8a3011756318a2ded1e6e84332230a2b2bf9c544, 2017-11-06T21:46:54.710Z)
OS Version: Darwin x64 16.7.0

Steps to Reproduce:

Click the gear at bottom left and select Color Theme
Change the color scheme to Dark SQL Operation Studio (or similar)
Change again to Light SQL Operation Studio

Color of basic text (and possibly other areas?) retains the previously selected color. So going from Dark to Light retains white text on white background. You can repeat this with other selections to have things like light orange text on the white background. Presumably the Light SQL color theme is lacking a default color definition for its text.

I've seen this myself on a rare occasion, but had no luck debugging it. Restarting Ops Studio fixes the issue for me - can you try this too? There's some strange edge case where the default color is undefined even though it is set in the theme definition.

Yes, restarting Ops Studio fixes this. I discovered this while cycling through the color-schemes using the up/down arrows.


Mention docs page in README

It would also help if you set a project url in github to https://pythonhosted.org/blinker/ :-)

Thanks. I'm not familiar with project url in github- can you point me to that?

thanks for meeting. the project url is shown at the top of the page. close to the repository name you can set a description and a url. it makes the docs more discoverable.

Aha. Found it- thanks!


Fix identation

Fix Indentation

kindly fix this again, for the updated codes

Working on it

I have checked, Everything looks fine.


[Old-School Essentials Official] - 1.0.0

Changes / Comments

This character sheet was once named "Old-School Essentials - AAC", can we change it to "Old School Essentials Official"? Closes #6397
Adds automatic saving throw, HD, etc values based on class and level. Closes wesbaker/roll20-character-sheets#1
Add descending armor class support. Closes wesbaker#2
Add a readme and changelog. Closes wesbaker#3
Add a notes sheet and section to character tab. Closes  wesbaker#5
Fix armor addition being concatenation. Fixes wesbaker#4

Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

[X] Does the pull request title have the sheet name(s)? Include each sheet name.
[X] Is this a bug fix?
[X] Does this add functional enhancements (new features or extending existing features) ?
[X] Does this add or change functional aesthetics (such as layout or color scheme) ?
[X] If changing or removing attributes, what steps have you taken, if any, to preserve player data?

I've deprecated the field names that aren't automatically set, recalculated the ones that are automatically calculated

If this is a new sheet, did you follow Building Character Sheets standards ?

If you do not know English. Please leave a comment in your native language.

I'll get this updated to be official. :)

For official sheets we usually but the it as 'name by publisher'. I added this as 'by Necrotic Gnome' as that is what Google & Drive Throu recommend me. If the publisher is different please let us know.

@clevett nope, that's perfect! Thank you.


version info

Thanks for the great tool and also for keeping a separate BUSCO compatible full_table_busco_format.tsv along with the compleasm full_table.tsv. I have several scripts that depend on that format, so it is very useful to have.
Also thanks for integrating compleasm into the etp BRAKER 3.0.7 analysis.  Looking forward to using that and seeing how it  enhances etp mode results.
As more changes are added to compleasm, I find that I am missing having a --version and/or -v option as a compleasm.py command line option to see what version of the program is being run. I know it is in _version.py but it would be nice if this could be reported by the program. Could just be added to the -h --help output if it was in a predictable location in the output, but still seems like having a separate --version command is useful even if it is added to the help screen too.
Thanks again, best,
jim henderson

Thanks for the suggestion.

Thank you. Works great.

On 02/07/2024 6:45 PM PST Neng Huang @.***> wrote:
Thanks for the suggestion.
—
Reply to this email directly, view it on GitHub https://github.com/huangnengCSU/compleasm/issues/22#issuecomment-1933278717, or unsubscribe https://github.com/notifications/unsubscribe-auth/AELSO4PSUHUN3C6C6W3THKTYSQ347AVCNFSM6AAAAABC24STSCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZTGI3TQNZRG4.
You are receiving this because you authored the thread.Message ID: @.***>


Await existing link expander promises

Link previewer calls fetch for every url in every message, it may happen that one url is posted multiple times (in different channels), and before the response arrives for the first request, there is no real need to fire another request, something like
if (requests[link]) {
    requests[link].then()
}

https://github.com/thelounge/lounge/blob/f18d0193837cac829c26cfc90361752de91f9164/src/plugins/irc-events/link.js#L38-L46

Hey i have question, where information about currently active requests that are not yet fullfiled should be stored in app? Is client object valid option?

It can be an object within the same file.


[Device] Thermostat like the Eurotronics ones

Hi!
Great plugin -- really like. So far, I have manually all my zigbee stuff to homebridge, but that was buggy.
Would you mind adding support for thermostats (e.g. the Eurotronic ones)?
I am not sure what information you need -- in case it helps, I am adding some stuff:
A syslog snippet outlining the zigbee parameters of a thermostat:
Dec 20 00:04:50 troublemaker npm[7065]: Zigbee2MQTT:info  2020-12-20 00:04:50: MQTT publish: topic 'zigbee2mqtt/KuecheThermostat', payload '{"battery":0.5,"battery_low":0,"current_heating_setpoint":20,"eurotronic_error_status":0,"eurotronic_host_flags":{"boost":false,"child_protection":false,"mirror_display":false,"window_open":false},"eurotronic_system_mode":1,"linkquality":65,"local_temperature":21.5,"local_temperature_calibration":0,"occupied_heating_setpoint":20,"pi_heating_demand":2,"system_mode":"auto","unoccupied_heating_setpoint":10}'
... and apparently some JSON used to create this device in homebridge (using the homebridge MQTT plugin)
{"service_name":"Heizung","service":"Thermostat","CurrentHeatingCoolingState":1,"TargetHeatingCoolingState":{"validValues":[0,1]},"CurrentTemperature":"default","TargetTemperature":18,"TemperatureDisplayUnits":"default","name":"KuecheThermostat"}
(not sure if this is best practice ... did this one year ago without knowing of homebridge.io API docs)

this is the API doc I meant
https://developers.homebridge.io/#/service/Thermostat

I'm currently focusing on getting a new major version ready with several internal improvements (see #18).
I've had a brief look into thermostats in general. I think adding support for them should not be too difficult, but I have yet to look at the specifics.
Biggest challenge is probably testing it, as I don't have a Zigbee thermostat myself.
I'll keep this issue in the "backlo and hopefully I'll be able to get to it in a couple of weeks.

Cool
I got them so I can test if that helps :)

I’ve done this manually in node-red and really struggled... I found a HeaterCooler service to map better than a ThermostatService for what most zigbee TRV’s expose.
It’s certainly doable thoigh.

I’ve done this manually in node-red and really struggled... I found a HeaterCooler service to map better than a ThermostatService for what most zigbee TRV’s expose.
It’s certainly doable thoigh.

@jhm47 Can you already post the following information?

Entry for this device from zigbee2mqtt/bridge/info/devices (you'll need a recent version of zigbee2mqtt for this)
Some MQTT messages of status updates from this device

This will help in writing some tests and writing the implementation, once I get to it.

@jhm47 Can you already post the following information?

Entry for this device from zigbee2mqtt/bridge/info/devices (you'll need a recent version of zigbee2mqtt for this)
Some MQTT messages of status updates from this device

This will help in writing some tests and writing the implementation, once I get to it.

Sure! Will do once I am back from vacation (Jan 25)
Best
On 6. Jan 2021, at 11:11, Arno Moonen<EMAIL_ADDRESS>wrote:
 EXTERNAL email from<EMAIL_ADDRESS>@jhm47https://github.com/jhm47 Can you already post the following information?

Entry for this device from zigbee2mqtt/bridge/info/devices (you'll need a recent version of zigbee2mqtt for this)
Some MQTT messages of status updates from this device

This will help in writing some tests and writing the implementation, once I get to it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/itavero/homebridge-z2m/issues/32#issuecomment-755104386, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQCFZBT5L7XAFOWSEYGZIQLSYP5IPANCNFSM4VCUJGYA.

The Boston Consulting Group GmbH
Sitz der Gesellschaft München
Amtsgericht München HRB 132429
Geschäftsführer: https://www.bcg.com/de-de/about/geschaeftsfuehrer.aspx
This e-mail message may contain confidential and/or privileged information.
If you are not an addressee or otherwise authorized to receive this message,
you should not use, copy, disclose or take any action based on this e-mail or
any information contained in the message. If you have received this material
in error, please advise the sender immediately by reply e-mail and delete this
message.
We may share your contact details with other BCG entities and our third party service providers. Please see BCG privacy policy https://www.bcg.com/about/privacy-policy.aspx for further information.
Thank you.

Sure! Will do once I am back from vacation (Jan 25)
Best
On 6. Jan 2021, at 11:11, Arno Moonen<EMAIL_ADDRESS>wrote:
 EXTERNAL email from<EMAIL_ADDRESS>@jhm47https://github.com/jhm47 Can you already post the following information?

Entry for this device from zigbee2mqtt/bridge/info/devices (you'll need a recent version of zigbee2mqtt for this)
Some MQTT messages of status updates from this device

This will help in writing some tests and writing the implementation, once I get to it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/itavero/homebridge-z2m/issues/32#issuecomment-755104386, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQCFZBT5L7XAFOWSEYGZIQLSYP5IPANCNFSM4VCUJGYA.

The Boston Consulting Group GmbH
Sitz der Gesellschaft München
Amtsgericht München HRB 132429
Geschäftsführer: https://www.bcg.com/de-de/about/geschaeftsfuehrer.aspx
This e-mail message may contain confidential and/or privileged information.
If you are not an addressee or otherwise authorized to receive this message,
you should not use, copy, disclose or take any action based on this e-mail or
any information contained in the message. If you have received this material
in error, please advise the sender immediately by reply e-mail and delete this
message.
We may share your contact details with other BCG entities and our third party service providers. Please see BCG privacy policy https://www.bcg.com/about/privacy-policy.aspx for further information.
Thank you.

@sjorge As more people are requesting support for TRVs and other climate devices, I wonder if you would be able to share how you've mapped your devices (which properties map to which characteristics).
If I have a look at devices.js, at first glance, I would think most of them can be mapped to a Thermostat. With the Heater Cooler I'm missing the setpoint (Target Temperature). Of course I can just add the characteristic, but it's not part of the "default" set of characteristics specified for the Heater Cooler.

@sjorge As more people are requesting support for TRVs and other climate devices, I wonder if you would be able to share how you've mapped your devices (which properties map to which characteristics).
If I have a look at devices.js, at first glance, I would think most of them can be mapped to a Thermostat. With the Heater Cooler I'm missing the setpoint (Target Temperature). Of course I can just add the characteristic, but it's not part of the "default" set of characteristics specified for the Heater Cooler.

I'm using node-red, but the characteristics should be the same looks like I ended up switching back to Thermostat on the latest version of my subflow.
{
    "CurrentTemperature": true,
    "TargetTemperature": {
        "minValue": 8,
        "maxValue": 30,
        "minStep": 0.5
    },
    "CurrentHeatingCoolingState": true,
    "TargetHeatingCoolingState": {
        "validValues": [
            1
        ]
    }
}

Here is the function that does my mapping in node red,
/*
 * processor
 * ----------------------------------------------------
 * A ticker is used to trigger the main event loop.
 * The ticker sets the pace of handling the flow state.
 */

 /*
  * homekit mappings
  * ----------------------------------------------------
  * Active: 0=off, 1=heat, 2=cool, 3=auto
  * TargetHeaterCoolerState: 0=auto, 1=heat, 2=cool
  *
  * zigbee mappings (TUYA)
  * ----------------------------------------------------
  * system_mode: off, auto, manual, boost
  * child_lock (get): LOCKED, UNLOCKED
  * child_lock (set): LOCK, UNLOCK
  * auto_lock (set): AUTO, MANUAL
  * position: 0-100 (valve open %) [??? missing]
  *
  * zigbee mappings (eurotronic)
  * ----------------------------------------------------
  * system_mode: off, heat (boost), auto
  * eurotronic_host_flags.child_protection: true or false
  * pi_heating_demand: 0-100 (valve open %)
  *
  * zigbee mappings (ViCare)
  * ----------------------------------------------------
  * pi_heating_demand: 0-5 (0 closed, 1-5 ???) -- REMOVED
  *
  */

// variables
var state_base = `$parent.${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}`;
var sync_timeout = 5000;
var brand_supported = ["TUYA", "EUROTRONIC", "VICARE"];
var brand = (env.get("BRAND")||"EUROTRONIC").toUpperCase();
var low_battery = env.get("BATTERY_LOW_PCT")||0;
var ret = {
    "continue": {"reset": true},
    "mqtt": null,
    "homekit_thermostat": null,
    "homekit_battery": null,
};

// helpers functions
function stateGet(state_name, state_default=null, persistent=true) {
    return flow.get(`${state_base}/${state_name}`, (persistent ? "persistent" : null))||state_default;
}

function stateSet(state_name, state, persistent=true) {
    flow.set(`${state_base}/${state_name}`, state, (persistent ? "persistent" : null));
}

function stateGetAndSet(state_name, state, state_default=null, persistent=true) {
    var ret_state = stateGet(state_name, state_default, persistent);
    stateSet(state_name, state, persistent);
    return ret_state;
}

function homekitThermostatPublish(ret, prop, value) {
    // initialize ret.homekit_thermostat
    if (ret.homekit_thermostat === null) {
        ret.homekit_thermostat = {
            "topic": `${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}`,
            "payload": {},
        };
    }

    // update payload
    ret.homekit_thermostat.payload[prop] = value;
}

function homekitBatteryPublish(ret, prop, value) {
    // initialize ret.homekit_battery
    if (ret.homekit_battery === null) {
        ret.homekit_battery = {
            "topic": `${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}`,
            "payload": {},
        };
    }

    // update payload
    ret.homekit_battery.payload[prop] = value;
}

function mqttPublish(ret, prop, value) {
    // initialize ret.homekit
    if (ret.mqtt === null) {
        ret.mqtt = {
            "topic": `${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}/set`,
            "payload": {},
        };
    }

    // update payload
    ret.mqtt.payload[prop] = value;
}

function timestamp() {
    return Math.round((new Date()).getTime());
}

// main logic controller
if (!brand_supported.includes(brand)) {
    node.error(`Unsupported TRV brand ${brand}!`);
    return;
} else if (stateGet("sync", null, false) === null) {
    stateSet("queue_mqtt", stateGet("state", {}));
    stateSet("sync", (timestamp() - sync_timeout), false);
}

if (Object.keys(stateGet("queue_homekit", {})).length > 0) {
    // process homekit change queue
    var homekit = stateGetAndSet("queue_homekit", {}, {});
    // convert homekit to mqtt
    for (var hp in homekit) {
        var hv = homekit[hp];
        switch(hp) {
            case "Active":
                if (hv === 0) {
                    switch(brand) {
                        case "TUYA":
                        case "EUROTRONIC":
                            mqttPublish(ret, "system_mode", "off");
                            break;
                    }
                } else {
                    switch(brand) {
                        case "TUYA":
                            mqttPublish(ret, "system_mode", "manual");
                            break;
                        case "EUROTRONIC":
                            mqttPublish(ret, "system_mode", "auto");
                            break;
                    }
                }
                break;
            case "TargetTemperature":
            case "HeatingThresholdTemperature":
                switch(brand) {
                    case "TUYA":
                        mqttPublish(ret, "current_heating_setpoint", Math.max(Math.min(hv, 30), 5));
                        break;
                    case "EUROTRONIC":
                        mqttPublish(ret, "current_heating_setpoint", Math.max(Math.min(hv, 30), 10));
                        break;
                    case "VICARE":
                        mqttPublish(ret, "occupied_heating_setpoint", Math.max(Math.min(hv, 30), 8));
                        break;
                }
                break;
            case "LockPhysicalControls":
                switch(brand) {
                    case "TUYA":
                        mqttPublish(ret, "child_lock", ((hv == 1) ? "LOCK" : "UNLOCK"));
                        mqttPublish(ret, "auto_lock", ((hv == 1) ? "AUTO" : "MANUAL"));
                        break;
                    case "EUROTRONIC":
                        mqttPublish(ret, "eurotronic_host_flags", {"child_protection": ((hv == 1) ? true : false)});
                        break;
                }
                break;
            case "TemperatureDisplayUnits":
                switch(brand) {
                    case "VICARE":
                        homekitThermostatPublish(ret, "TemperatureDisplayUnits", 0);
                        break;
                }
                break;
        }
    }

    // update cache
    if (ret.mqtt !== null) {
        stateSet("sync", timestamp(), false);
        stateSet("state",
            Object.assign(stateGet("state", {}, true), ret.mqtt.payload));
    }
} else if (
    (Object.keys(stateGet("queue_mqtt", {})).length > 0) &&
    ((timestamp() - stateGet("sync", 0, false)) >= sync_timeout)
) {
    // process mqtt change queue
    var mqtt = stateGetAndSet("queue_mqtt", {}, {});

    if (!mqtt.hasOwnProperty("available") || mqtt.available) {
        // convert mqtt to homekit
        for (var mp in mqtt) {
            var mv = mqtt[mp];

            switch(mp) {
                case "available":
                    delete mqtt.available;
                    break;
                case "local_temperature":
                    homekitThermostatPublish(ret, "CurrentTemperature", mv);
                    // NOTE: TuYa and ViCare lack pi_heating_demand
                    if (["VICARE", "TUYA"].includes(brand)) {
                        var temp_target = 0.0;
                        var temp_actual = 0.0;

                        if (mqtt.current_heating_setpoint) {
                            temp_target = parseFloat(mqtt.current_heating_setpoint);
                        } else if (stateGet("state", {}).current_heating_setpoint) {
                            temp_target = parseFloat(stateGet("state", {}).current_heating_setpoint);
                        }

                        temp_actual = parseFloat(mv);

                        switch(brand) {
                            case "VICARE":
                                homekitThermostatPublish(ret, "CurrentHeatingCoolingState", ((temp_actual >= temp_target)? 0 : 1));
                                break;
                            case "TUYA":
                                homekitThermostatPublish(ret, "CurrentHeaterCoolerState", ((temp_actual >= temp_target) ? 1 : 2));
                                break;
                        }
                    }
                    break;
                case "occupied_heating_setpoint":
                case "current_heating_setpoint":
                    switch(brand) {
                        case "TUYA":
                            homekitThermostatPublish(ret, "HeatingThresholdTemperature", Math.max(Math.min(mv, 30), 5));
                            break;
                        case "EUROTRONIC":
                            homekitThermostatPublish(ret, "HeatingThresholdTemperature", Math.max(Math.min(mv, 30), 10));
                            break;
                        case "VICARE":
                            homekitThermostatPublish(ret, "TargetTemperature", Math.max(Math.min(mv, 30), 8));
                            break;
                    }
                    break;
                case "system_mode":
                    switch(brand) {
                        case "VICARE":
                            // NOTE: not mapped for thermostat service
                            break;
                        default:
                            homekitThermostatPublish(ret, "Active", ((mv == "off") ? 0 : 1));
                            homekitThermostatPublish(ret, "TargetHeaterCoolerState", 1);
                            break;

                    }
                    break;
                case "pi_heating_demand":
                case "position":
                    switch(brand) {
                        case "VICARE":
                            homekitThermostatPublish(ret, "CurrentHeatingCoolingState", ((mv === 0) ? 0 : 1));
                            break;
                        default:
                            homekitThermostatPublish(ret, "CurrentHeaterCoolerState", ((mv === 0) ? 1 : 2));
                            break;

                    }
                    break;
                case "child_lock":
                    homekitThermostatPublish(ret, "LockPhysicalControls", ((mv == "LOCKED") ? 1 : 0));
                    break;
                case "eurotronic_host_flags":
                    homekitThermostatPublish(ret, "LockPhysicalControls", mv.child_protection ? 1 : 0);
                    break;
                case "battery":
                    homekitBatteryPublish(ret, "BatteryLevel", mv);
                    if (low_battery !== 0) {
                        homekitBatteryPublish(ret, "StatusLowBattery", (mv <= low_battery ? 1 : 0));
                    }
                    break;
                case "battery_low":
                    if (low_battery === 0) {
                        homekitBatteryPublish(ret, "StatusLowBattery", (mv ? 1 : 0));
                    }
                    break;
            }
        }

        // always mark 'ViCare' as active
        if (brand == 'VICARE') {
            homekitThermostatPublish(ret, "TargetHeatingCoolingState", 1);
        }

        // update cache
        stateSet("state",
            Object.assign(stateGet("state", {}), mqtt));
    } else {
        // mark dev offline
        switch(brand) {
            case "VICARE":
                homekitThermostatPublish(ret, "TargetHeatingCoolingState", "NO_RESPONSE");
                break;
            default:
                homekitThermostatPublish(ret, "Active", "NO_RESPONSE");
                break;
        }
    }
}

// publish messages
return [
    ret.continue,
    ret.mqtt,
    ret.homekit_thermostat,
    ret.homekit_battery,
];

Thermostats/TRV are one of my most hated things in zigbee2mqtt, half follow the zigbee mapping (IMHO, the correct way) other follow the hassio mapping of certain things like system_mode. It's a royal mess :(

I'm using node-red, but the characteristics should be the same looks like I ended up switching back to Thermostat on the latest version of my subflow.
{
    "CurrentTemperature": true,
    "TargetTemperature": {
        "minValue": 8,
        "maxValue": 30,
        "minStep": 0.5
    },
    "CurrentHeatingCoolingState": true,
    "TargetHeatingCoolingState": {
        "validValues": [
            1
        ]
    }
}

Here is the function that does my mapping in node red,
/*
 * processor
 * ----------------------------------------------------
 * A ticker is used to trigger the main event loop.
 * The ticker sets the pace of handling the flow state.
 */

 /*
  * homekit mappings
  * ----------------------------------------------------
  * Active: 0=off, 1=heat, 2=cool, 3=auto
  * TargetHeaterCoolerState: 0=auto, 1=heat, 2=cool
  *
  * zigbee mappings (TUYA)
  * ----------------------------------------------------
  * system_mode: off, auto, manual, boost
  * child_lock (get): LOCKED, UNLOCKED
  * child_lock (set): LOCK, UNLOCK
  * auto_lock (set): AUTO, MANUAL
  * position: 0-100 (valve open %) [??? missing]
  *
  * zigbee mappings (eurotronic)
  * ----------------------------------------------------
  * system_mode: off, heat (boost), auto
  * eurotronic_host_flags.child_protection: true or false
  * pi_heating_demand: 0-100 (valve open %)
  *
  * zigbee mappings (ViCare)
  * ----------------------------------------------------
  * pi_heating_demand: 0-5 (0 closed, 1-5 ???) -- REMOVED
  *
  */

// variables
var state_base = `$parent.${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}`;
var sync_timeout = 5000;
var brand_supported = ["TUYA", "EUROTRONIC", "VICARE"];
var brand = (env.get("BRAND")||"EUROTRONIC").toUpperCase();
var low_battery = env.get("BATTERY_LOW_PCT")||0;
var ret = {
    "continue": {"reset": true},
    "mqtt": null,
    "homekit_thermostat": null,
    "homekit_battery": null,
};

// helpers functions
function stateGet(state_name, state_default=null, persistent=true) {
    return flow.get(`${state_base}/${state_name}`, (persistent ? "persistent" : null))||state_default;
}

function stateSet(state_name, state, persistent=true) {
    flow.set(`${state_base}/${state_name}`, state, (persistent ? "persistent" : null));
}

function stateGetAndSet(state_name, state, state_default=null, persistent=true) {
    var ret_state = stateGet(state_name, state_default, persistent);
    stateSet(state_name, state, persistent);
    return ret_state;
}

function homekitThermostatPublish(ret, prop, value) {
    // initialize ret.homekit_thermostat
    if (ret.homekit_thermostat === null) {
        ret.homekit_thermostat = {
            "topic": `${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}`,
            "payload": {},
        };
    }

    // update payload
    ret.homekit_thermostat.payload[prop] = value;
}

function homekitBatteryPublish(ret, prop, value) {
    // initialize ret.homekit_battery
    if (ret.homekit_battery === null) {
        ret.homekit_battery = {
            "topic": `${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}`,
            "payload": {},
        };
    }

    // update payload
    ret.homekit_battery.payload[prop] = value;
}

function mqttPublish(ret, prop, value) {
    // initialize ret.homekit
    if (ret.mqtt === null) {
        ret.mqtt = {
            "topic": `${env.get("MQTT_PREFIX")}/${env.get("MQTT_DEVICE")}/set`,
            "payload": {},
        };
    }

    // update payload
    ret.mqtt.payload[prop] = value;
}

function timestamp() {
    return Math.round((new Date()).getTime());
}

// main logic controller
if (!brand_supported.includes(brand)) {
    node.error(`Unsupported TRV brand ${brand}!`);
    return;
} else if (stateGet("sync", null, false) === null) {
    stateSet("queue_mqtt", stateGet("state", {}));
    stateSet("sync", (timestamp() - sync_timeout), false);
}

if (Object.keys(stateGet("queue_homekit", {})).length > 0) {
    // process homekit change queue
    var homekit = stateGetAndSet("queue_homekit", {}, {});
    // convert homekit to mqtt
    for (var hp in homekit) {
        var hv = homekit[hp];
        switch(hp) {
            case "Active":
                if (hv === 0) {
                    switch(brand) {
                        case "TUYA":
                        case "EUROTRONIC":
                            mqttPublish(ret, "system_mode", "off");
                            break;
                    }
                } else {
                    switch(brand) {
                        case "TUYA":
                            mqttPublish(ret, "system_mode", "manual");
                            break;
                        case "EUROTRONIC":
                            mqttPublish(ret, "system_mode", "auto");
                            break;
                    }
                }
                break;
            case "TargetTemperature":
            case "HeatingThresholdTemperature":
                switch(brand) {
                    case "TUYA":
                        mqttPublish(ret, "current_heating_setpoint", Math.max(Math.min(hv, 30), 5));
                        break;
                    case "EUROTRONIC":
                        mqttPublish(ret, "current_heating_setpoint", Math.max(Math.min(hv, 30), 10));
                        break;
                    case "VICARE":
                        mqttPublish(ret, "occupied_heating_setpoint", Math.max(Math.min(hv, 30), 8));
                        break;
                }
                break;
            case "LockPhysicalControls":
                switch(brand) {
                    case "TUYA":
                        mqttPublish(ret, "child_lock", ((hv == 1) ? "LOCK" : "UNLOCK"));
                        mqttPublish(ret, "auto_lock", ((hv == 1) ? "AUTO" : "MANUAL"));
                        break;
                    case "EUROTRONIC":
                        mqttPublish(ret, "eurotronic_host_flags", {"child_protection": ((hv == 1) ? true : false)});
                        break;
                }
                break;
            case "TemperatureDisplayUnits":
                switch(brand) {
                    case "VICARE":
                        homekitThermostatPublish(ret, "TemperatureDisplayUnits", 0);
                        break;
                }
                break;
        }
    }

    // update cache
    if (ret.mqtt !== null) {
        stateSet("sync", timestamp(), false);
        stateSet("state",
            Object.assign(stateGet("state", {}, true), ret.mqtt.payload));
    }
} else if (
    (Object.keys(stateGet("queue_mqtt", {})).length > 0) &&
    ((timestamp() - stateGet("sync", 0, false)) >= sync_timeout)
) {
    // process mqtt change queue
    var mqtt = stateGetAndSet("queue_mqtt", {}, {});

    if (!mqtt.hasOwnProperty("available") || mqtt.available) {
        // convert mqtt to homekit
        for (var mp in mqtt) {
            var mv = mqtt[mp];

            switch(mp) {
                case "available":
                    delete mqtt.available;
                    break;
                case "local_temperature":
                    homekitThermostatPublish(ret, "CurrentTemperature", mv);
                    // NOTE: TuYa and ViCare lack pi_heating_demand
                    if (["VICARE", "TUYA"].includes(brand)) {
                        var temp_target = 0.0;
                        var temp_actual = 0.0;

                        if (mqtt.current_heating_setpoint) {
                            temp_target = parseFloat(mqtt.current_heating_setpoint);
                        } else if (stateGet("state", {}).current_heating_setpoint) {
                            temp_target = parseFloat(stateGet("state", {}).current_heating_setpoint);
                        }

                        temp_actual = parseFloat(mv);

                        switch(brand) {
                            case "VICARE":
                                homekitThermostatPublish(ret, "CurrentHeatingCoolingState", ((temp_actual >= temp_target)? 0 : 1));
                                break;
                            case "TUYA":
                                homekitThermostatPublish(ret, "CurrentHeaterCoolerState", ((temp_actual >= temp_target) ? 1 : 2));
                                break;
                        }
                    }
                    break;
                case "occupied_heating_setpoint":
                case "current_heating_setpoint":
                    switch(brand) {
                        case "TUYA":
                            homekitThermostatPublish(ret, "HeatingThresholdTemperature", Math.max(Math.min(mv, 30), 5));
                            break;
                        case "EUROTRONIC":
                            homekitThermostatPublish(ret, "HeatingThresholdTemperature", Math.max(Math.min(mv, 30), 10));
                            break;
                        case "VICARE":
                            homekitThermostatPublish(ret, "TargetTemperature", Math.max(Math.min(mv, 30), 8));
                            break;
                    }
                    break;
                case "system_mode":
                    switch(brand) {
                        case "VICARE":
                            // NOTE: not mapped for thermostat service
                            break;
                        default:
                            homekitThermostatPublish(ret, "Active", ((mv == "off") ? 0 : 1));
                            homekitThermostatPublish(ret, "TargetHeaterCoolerState", 1);
                            break;

                    }
                    break;
                case "pi_heating_demand":
                case "position":
                    switch(brand) {
                        case "VICARE":
                            homekitThermostatPublish(ret, "CurrentHeatingCoolingState", ((mv === 0) ? 0 : 1));
                            break;
                        default:
                            homekitThermostatPublish(ret, "CurrentHeaterCoolerState", ((mv === 0) ? 1 : 2));
                            break;

                    }
                    break;
                case "child_lock":
                    homekitThermostatPublish(ret, "LockPhysicalControls", ((mv == "LOCKED") ? 1 : 0));
                    break;
                case "eurotronic_host_flags":
                    homekitThermostatPublish(ret, "LockPhysicalControls", mv.child_protection ? 1 : 0);
                    break;
                case "battery":
                    homekitBatteryPublish(ret, "BatteryLevel", mv);
                    if (low_battery !== 0) {
                        homekitBatteryPublish(ret, "StatusLowBattery", (mv <= low_battery ? 1 : 0));
                    }
                    break;
                case "battery_low":
                    if (low_battery === 0) {
                        homekitBatteryPublish(ret, "StatusLowBattery", (mv ? 1 : 0));
                    }
                    break;
            }
        }

        // always mark 'ViCare' as active
        if (brand == 'VICARE') {
            homekitThermostatPublish(ret, "TargetHeatingCoolingState", 1);
        }

        // update cache
        stateSet("state",
            Object.assign(stateGet("state", {}), mqtt));
    } else {
        // mark dev offline
        switch(brand) {
            case "VICARE":
                homekitThermostatPublish(ret, "TargetHeatingCoolingState", "NO_RESPONSE");
                break;
            default:
                homekitThermostatPublish(ret, "Active", "NO_RESPONSE");
                break;
        }
    }
}

// publish messages
return [
    ret.continue,
    ret.mqtt,
    ret.homekit_thermostat,
    ret.homekit_battery,
];

Thermostats/TRV are one of my most hated things in zigbee2mqtt, half follow the zigbee mapping (IMHO, the correct way) other follow the hassio mapping of certain things like system_mode. It's a royal mess :(

Opened up #40 to group all the individual request for thermostat/TRV support in one place, as these will most likely be handled by the same code.
Because of that I'm closing this issue. Updates/discussion should be done in this new issue.

Opened up #40 to group all the individual request for thermostat/TRV support in one place, as these will most likely be handled by the same code.
Because of that I'm closing this issue. Updates/discussion should be done in this new issue.


Some small fixes to make it work.

First of all, thanks for the work. It almost works perfectly.
While testing it I found some small issues, which I fixed.

Amazon released 2016.03.3 AMI so use that as default
/etc/redhat-release is not needed and confuses ansible
/vagrant cannot be mounted without Guest additions and breaks. So don't mount it
The base AMI misses gcc and kernel-devel packages. They are needed to compile the kernel module. Install them.

Thanks for the contribution!
I'll followup after testing.

👍

Merged update to latest linux AMI in #10


ImportError: No module named '_pywrap_tensorflow'

Please go to Stack Overflow for help and support:
https://stackoverflow.com/questions/tagged/tensorflow
If you open a GitHub issue, here is our policy:

It must be a bug, a feature request, or a significant problem with documentation (for small docs fixes please send a PR instead).
The form below must be filled out.
It shouldn't be a TensorBoard issue. Those go here.

Here's why we have that policy: TensorFlow developers respond to issues. We want to focus on work that benefits the whole community, e.g., fixing bugs and adding features. Support only helps individuals. GitHub also notifies thousands of people when issues are filed. We want them to see you communicating an interesting problem, rather than being redirected to Stack Overflow.

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Microsoft Windows [Version 6.1.7601]
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): pip command
TensorFlow version (use command below):
Python version: Python 3.6.4
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version:
GPU model and memory:
Exact command to reproduce:

You can collect some of this information using our environment capture script:
https://github.com/tensorflow/tensorflow/tree/master/tools/tf_env_collect.sh
You can obtain the TensorFlow version with
python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
Describe the problem
Describe the problem clearly here. Be sure to convey here why it's a bug in TensorFlow or a feature request.
I have researched most of the issue but it seems none of them resolves mine.
Source code / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Try to provide a reproducible test case that is the bare minimum necessary to generate the problem.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
C:\Users\Anmol Anand>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.

import tensorflow
Traceback (most recent call last):
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python\pywrap_tensorflow.py", line 18, in swig_import_helper

fp, pathname, description = imp.find_module('_pywrap_tensorflow', [dirname(_

file_)])
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\imp.p
y", line 297, in find_module
raise ImportError(_ERR_MSG.format(name), name=name)
ImportError: No module named '_pywrap_tensorflow'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python_init_.py", line 66, in
from tensorflow.python import pywrap_tensorflow
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python\pywrap_tensorflow.py", line 28, in
_pywrap_tensorflow = swig_import_helper()
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python\pywrap_tensorflow.py", line 20, in swig_import_helper
import _pywrap_tensorflow

ModuleNotFoundError: No module named '_pywrap_tensorflow'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow_init_.py", line 24, in
from tensorflow.python import *
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python_init_.py", line 72, in
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python\pywrap_tensorflow.py", line 18, in swig_import_helper
fp, pathname, description = imp.find_module('_pywrap_tensorflow', [dirname(_

file_)])
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\imp.p
y", line 297, in find_module
raise ImportError(_ERR_MSG.format(name), name=name)
ImportError: No module named '_pywrap_tensorflow'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python_init_.py", line 66, in
from tensorflow.python import pywrap_tensorflow
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python\pywrap_tensorflow.py", line 28, in
_pywrap_tensorflow = swig_import_helper()
File "C:\Users\Anmol Anand\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\tensorflow\python\pywrap_tensorflow.py", line 20, in swig_import_helper
import _pywrap_tensorflow

ModuleNotFoundError: No module named '_pywrap_tensorflow'
Failed to load the native TensorFlow runtime.
See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_st
arted/os_setup.md#import_error
for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

Nagging Assignee @poxvoculi: It has been 14 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

I suspect this is a duplicate of https://github.com/tensorflow/tensorflow/issues/19584
What is your CPU make and model?

Nagging Assignee @gunan: It has been 14 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

Nagging Assignee @gunan: It has been 29 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.


Is there a way to show tags in posts?

Thanks for the Geekdoc theme. Really like the doc style a lot.
Is there a way to always show tags in post like Geekblog?

Thanks. No, that's not possible out of the box.

I was wrong, we had implemented this already, see https://geekdocs.de/posts/ and https://raw.githubusercontent.com/thegeeklab/hugo-geekdoc/main/exampleSite/content/posts/hello_geekdoc.md

The linked PR unifies the post metadata and shows it on the list view as well as on the single page view. Hope this will fix the issue for you finally.

Thanks for the update. I really appreciate it.


Library source code directory can't be subdir or root dir

The documentation for the module.json file clearly states that a subdirectory may be used for the "lib" property of a library module:

For example, to build a library out of the contents of ./some/subdirectory instead of the default source directory, use:
"lib": "./some/subdirectory"
(http://yottadocs.mbed.com/reference/module.html)

However, this does not work for me. I have a "source" folder which is empty except for a "subsrc" directory, which contains source code. If I set "lib": "./source", my source files are compiled correctly. If I set "lib": "./source/subsrc", yotta finds no sources and generates an empty placeholder library instead.
The same thing happens when I set "lib": "./" (no sources are found). The behavior of using the root directory as the source dir is not clearly documented, but it seems like it ought to be allowed.

Thanks for reporting!
The subdirectory should work, putting source files directly in the root directory is probably not a good idea, but I think it should be supported.

Yes, it works fine with ./anyfolder or just anyfolder, but not with ./folder1/folder2. I haven't tried ./source/folder2.
The reason I might use the root directory for sources is to maintain compatibility with other build systems. A custom cmake is probably a better idea, but it would be nice to choose.


The Apache web site should have a "What is Apache" section

When you ask google "What is Apache", the Apache HTTP Server Project only come at 4th.
And even in this link, the description is not very detail either.
As this web is literally the Apache web, should it has a dedicated page telling people "What is Apache" is all about ?

@tuan-lm97  can I work on this issue?

So, the following "What is Apache Software Foundation" has first-place SEO (google), with clear enough text:

About the Foundation¶. The ASF is a 501(c)(3) charitable organization run almost exclusively by volunteers who oversee hundreds of projects. Our sponsors enable...

(odd paragraph character showing)
Additionally, both "What is Apache HTTP Server" and "What is Apache Web Server" have first-place SEO (google). With explanation of

"The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. "

I don't see any reason why "What is Apache" should expect the HTTP Server to be the first hit. And while I'm sad that the first/second responses are third parties talking about HTTP Server, I don't think pushing our HTTP Server page higher is the right answer.

Closing this as I don't think there's scope for change, but please reopen if you feel strongly.


⚠ Bofrost.fr has degraded performance

In 926b2d1, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1511 ms

Resolved: Bofrost.fr performance has improved in bc09520.


94 hatch envs

Add hatch test config

add hatch test config
add config for hatch dev environment
separate test dependencies from other dev dependencies

Refs #94

Hi Karel,
Could you check whether the config works on windows with hatch?
Things to try:

hatch test --all (test against all python versions)
hatch build (build all versions)
hatch env create dev (create a dev environment with dev dependencies)
hatch env dev (switch to the dev env)


Design a dedicated page to allow user to finish the individual verification.

Currently user clicks on the link (in Email, twitter CTA or Riot link) will implicitly finish the verification process. And user will be redirected back to Litentry website. This process is confusing for some user. Alternatively after user clicked on the respective link, additional page with the detail of the verification will be presented and user clicks on the CTA on that page to finish the verification process.
As of technical implementation, it's doable to introduce a small FE templating library to

render data in structured fashion.
able to style things correctly.

Templating engine such as hogan.js.

Basically is to convert this email template into a page.

Templating engine such as hogan.js.

I used template engine provided by https://lodash.com/docs/4.17.15#template to render email template
As for the static frontend pages, I think hogan.js would be a good choice


Scaling issue

Hi,
there seems to be a scaling issue if you have too similar values. In this case you line is shown: https://jsfiddle.net/o8q2jeu6/1/
If you just replace one data point with a value that differs much more from the average, then the line is shown properly (I replaced the first "22" with "1"): https://jsfiddle.net/o8q2jeu6/2/
Could you please have look into this?

Hi,
Awesome lib!!!!
Anything about this bug?

Hey, @vesakk is right, ths lib is Awesome !
Anything new about this bug ?

Hi @olivbau ,
I like your temp solution!

Normalizing the data works sometimes but not always.  I found that adding a dummy value at the front that was outside the range of other values always fixed the issue, but now you're plotting a fake piece of data.

数据稍微大一点比如 [ 300, 301, 302, 302 ], 路径就会飘到上面去了，完全看不到，必须得以一个很小的数字作为第一个数据，比如 [0, 300, 301, 302, 302 ] 才能绘图正常。

I have the same issue. When three values are similar in a row, the chart won't load.


Update release script to handle different branches

What changes were proposed in this pull request?

How was this pull request tested?

Developer's Certificate of Origin 1.1
   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

Closing this pull request. Changes for the release script have been pushed to each respective branch, so there is no longer a need to support the branch option in the script


fix: Fixing QA

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


Update ember-cli-blanket dependency to version v0.6.2

@notmessenger please assign this to me.

It is already assigned to me

Ah OK, nvm then.


Ability to add sub controller

Laravel Version: 5.6
PHP Version: 7.2
Laravel-admin: latest

Description:
Is there any way to add sub controller to a controller. For example if I edit a product to have after the form another grid of related product variations where I can edit/create or delete variation of the product?
In other words to have Grid in Form

For example, there are now two tables posts and comments, the models are App\Models\Post and App\Models\Comment, which are one-to-many relationships.
class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}

class Comment extends Model
{
}

You want to display the comments grid under the form on the posts edit page. You can refer to the following code:
class PostController extends Controller
{
    public function edit($id)
    {
        return Admin::content(function (Content $content) use ($id) {

            $content->header('header');
            $content->description('description');

            // add a form
            $content->row($this->form()->edit($id));

            // add a grid of table `comments`
            $content->row(Admin::grid(Comment::class, function (Grid $grid) use ($id) {

                $grid->setName('comments')
                    ->setTitle('Comments')
                    ->setRelation(Post::find($id)->comments())
                    ->resource('/demo/comments');

                $grid->id();
                $grid->content();
                $grid->created_at();
                $grid->updated_at();

            }));
        });
    }
}

Note: In order to be able to use this data table function normally, you must use the resource() method to set the url access path of the comments resource.

Thanks! I will test it :)
🥇🥇🥇🥇🥇🥇🥇🥇🥇 ❤


Update Makefile

sedlex >= 2.0 requires sedlex.ppx to be used in compilation

This fix was superseded by 3b9bb3023bc1c11058714b8b6de0a4f4fc1a1715


Return unique aggregate IDs from the DsAggregateStorage.index()

This PR fixes the work of the DsAggregateStorage.index() method.
Previously, the method returned a lot of repetitive aggregate IDs, returning an ID for each AggregateEventRecord found in the storage. Now, the method will return only unique aggregate IDs.
This is done with the help of Datastore ProjectionEntityQuery.
As the DatastoreWrapper now supports structured queries for arbitrary objects (and not only StructuredQuery<Entity>), the DsRecordStorage index was also migrated - to Datastore KeyQuery to avoid consuming additional entity read operations.
The core and base dependencies are bumped to 1.0.0 to fetch the corresponding AggregateStorage test.

@armiol PTAL.


Automated cherry pick of #2105, #2109, #2122, 2079, and #2130 to v1.8

What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in Fixes #<issue number>, #<issue number>, ... format, will close the issue(s) when PR gets merged):
Fixes #
Checklist:

[ ] Docs included if any changes are user facing

Uhm, let's cherry-pick one-by-one.
/close


No grandmaster info for archon mode

It is possible to get into grandmaster while playing archon mode, yet no info regarding this is shown by the website of this repo.

Thanks for the suggestion but I don't really want to support that.
At the moment it takes 3600 MMR on EU to get into Archon GM, yet the Diamond 1 requirement starts at 3587 MMR.
With 1v1 GM, I wanted to highlight at what MMR you can get into GM (e.g. 4800 to 5500 on EU is Master 1 atm) - while the overlap for Archon mode is too weird.


Unable to instantiate application (MiuiPackageInstaller)

I already disable signature verification and etc but it crash everytime i try to install an apk (Xiaomi.eu ROM)

+1. Have you found any workaround or fix? I found it not working in magisk alpha. It was fine for me in Ksu


Switch to MIDI-based note durations, timings, rests, delays, etc., and stop using Erlang to control the timing

Tasks:

[ ] Read up on best way to set beat, time sig, play notes by beat, play rests, etc.
[ ] #15
[ ] #17
[ ] TBD

Maybe the messages for controlling sequences?

Start/stop/continue
Song position pointer
MIDI clocks
Sequence time base
Tracking clock ticks
Bar Marker
Time Signature (Immediate)

My qualms with a MIDI approach to this problem are:

timing is critical and we need to have as much consistency and as little overhead as possible, and
all operations would have to be translated between Erlang and MIDI

I'd rather just keep everything in Erlang (LFE) the whole time, without the need for the overhead of translation to and from.
That being said, MIDI does have useful and time-worn abstractions for this problem ...

The Erlang VM is accurate to the millisecond. In 4/4 time a fast song at say 350 bpm would have the following note durations in any given measure:

whole note (4 beats) -->  350/60=4/x --> (/ 1 (/ (/ 350 60) 4)) --> 0.69s --> 685.7 ms
half note (2 beats) --> 342.9 ms
quarter note (1 beat) --> 171.4 ms
8th note --> 85.7 ms
16th note --> 42.9 ms
32nd note --> 21.5 ms
64th note --> 10.7 ms

A 64th note at 350 bpm is insane and probably not something that's going to happen very often, if at all. If it does, then Erlang is probably note the target platform for the developer who needs this capability. That being said, we should test this with actual notes + human ears over time. But we'll need to build something to test, first.

Instead of creating separate services for this, with code running in new Erlang processes in this or some other supervision tree, it would be nice to run a timer + queue at the same place where notes are being sent to the system MIDI device.
However ...
As soon as we need to write synchronised timings to multiple devices simultaneously, we need a little separation from timer-and-sender in the same Erlang process. Two instruments on separate devices should be able to play completely in-time with each other, so whatever is keeping time (and tracking beats, time sig, tempo, measures, etc.) should be able to provide clock into fast enough that the multiple devices can play in-time.
However ...
The Erlang NIF doesn't offer any native concurrency support for writing to system MIDI devices, so having a bunch of processes that request timing info from a central source and then send messages themselves doesn't really match up well with the lowest level dependency. It might make more sense to have a single Erlang process that dispatches to system MIDI. If that's the case, then we probably want something like the following:

for every MIDI device a developer wants to send MIDI data to, create a child process (per MIDI device) under the device manageer supervision tree (as is done now)
instead of sending directly to the MIDI devices from this child process, though, create Erlang term MIDI messages for notes on/off to a central dispatching process
the central dispatching process will maintain a queue as well as a clock
for each message it receives, it will calculate the time at which the note needs to be played, at millisecond resolution,  convert it to MIDI wire protocol binary, and schedule note on/off
pausing or stopping playback will cause the queue reader to stop reading Erlang term messages
resuming or starting will cause the queue ready to start reading Erlang term messsages

To support this, we would need the following:

a new gen_server, sibling to the device manager supervision tree
the ability to receive and process incoming Erlang term MIDI messages concurrently
a configurable, manageable message queue for the new gen_server
abstractions for tempo/bpm, time signatures, measures, beats, note/rest durations
a scheduler

Hrm, looks like this analysis ultimately belonged up one level in the ticket hierarchy ;-)

With regard to this (comment above):

My qualms with a MIDI approach to this problem are ...

I see now that I didn't fully capture my thinking from last night, 'cause reading it now just makes it sound like I didn't want to do MIDI (and we're doing so much MIDI, what's the problem?)
So:

To do this part of the system in MIDI (time clocks, etc.) we'd have to implement various level of support for this, in Erlang
Then we'd have to translated between the Erlang native parts of our system that needed timing info and the MIDI implementation we did in Erlang for all our timing needs ...

Yeah, I think that's enough context :-)


creating multiple bookmarks/views

Hi,
I found add_dataset_bookmark to be the function for adding v2 spec bookmarks, is that correct?
When I use it with overwrite=False, I assume this will add multiple bookmarks to one source.
my questions:

How do I get things like sourceNamesAfterTransform, contrast limits or the whole crop functionality in there?
Does it make sense to look at this functionality together/ split some work or should I try to generate the JSON some other way?

Thanks...

I found add_dataset_bookmark to be the function for adding v2 spec bookmarks, is that correct?

Yes, that's correct. There's also two other function that are relevant:

add_additional_bookmark, which will add a bookmark in an additional json (in misc/bookmarks)
add_grid_bookmark, which is specifically for grid views

When I use it with overwrite=False, I assume this will add multiple bookmarks to one source.

That's not quite correct. If overwrite=True and a bookmark with the name already exists it will be replaced. If False, existing bookmarks will not be replaced and the function will throw an error.
Once the bookmark exists you cannot update it with these functions, only fully replace it. For now, this would work by loading the dataset metadata and updating the corresponding dict in python:
ds_meta = mobie.metadata.read_dataset_metadata(ds_folder)
view = ds_meta["views"][bookmark_name]  # this is the bookmark
view["sourceDisplays"][0]["imageDisplay"]["opacity"] = 0.5  # change something in the bookmark
# .... more changes
ds_metadata["views"][bookmark_name] = view
mobie.metadata.write_dataset_metadata(ds_folder, ds_meta)

* How do I get things like `sourceNamesAfterTransform`, contrast limits or the whole `crop` functionality in there?

This can be done via the display_settings and source_transforms arguments. See this example. Though all of this needs to be documented better ...

Outdated with the views concept.


How to modify the {{ symbol in the expression as other symbols

The current template is JSX syntax, and any { will be parsed, causing errors, and any configuration to replace the { symbol
I didn't find it in the document. Maybe I wasn't careful enough.
 // such
 style={{ textAlign: 'right' }}

 render() {
    return (
      <Form
        className="ant-advanced-search-form"
        onSubmit={this.handleSearch}
      >
        <Row gutter={24}>{this.getFields()}</Row>
        <Row>
          <Col span={24} style={{ textAlign: 'right' }}>
            <Button type="primary" htmlType="submit">Search</Button>
            <Button style={{ marginLeft: 8 }} onClick={this.handleReset}>
              Clear
            </Button>
          </Col>
        </Row>
      </Form>
    );
  }

If I understand correctly, you want the syntax of handlebars to change from {{expression}} to some other tag, like [[expression]] or even like ^&expression&^?
I'm not a contributor to the project but it looks like handlebars uses lex and yacc:
https://github.com/wycats/handlebars.js/blob/master/src/handlebars.l
This is the lex file, it converts text to representational symbols for use in the parser (yacc). If you want to change the characters which are matched for handlebars, then you'd have to replace the appropriate {{ and }} instances in the regular expressions with your preferred syntax.
I'm not sure which syntax of lex and yacc this project uses, but they're generally pretty similar to each other. I think the most common implementations these days are flex and byacc

Yes, that's what it means. As you say, you need to modify the source code instead of providing the external interface.
Mustache provides a similar interface.
Please excuse my poor English translation software.


public, src,and scripts folder not created while installing react-app

npx version: 6.13.2
node version: 12.13.1
npm : 6.13.2

Created a react-app using: npx create-react-app my-app

Folder with node_modules, package.json and packageloack.json is created but src, public and scripts folder is not created.
Tried reinstalling nodejs, clearing cache etc. nothing worked.
Edit:

npm rm -g create-react-app
npm install -g create-react-app
npx create-react-app my-app

Doing that solved my problem.

I bet you had seen the following message:

A template was not provided. This is likely because you're using an outdated version of create-react-app.
Please note that global installs of create-react-app are no longer supported.

Run npm rm -g create-react-app and try again.
When using correct create-react-app version,  you will see and additional package cra-template
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...

While previous versions show smth like
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts...

same here

It's still happening on my side

I could not with npm, I uninstall globally but it doesn't work. Then I tried with yarn and it works for me

yarn create react-app my-app

I had a same problem first of all run this command
npm rm -g create-react-app
Then
delete all the previous projects you have created
then
create a new folder by running this command mkdir react-app
then
yarn create react-app my-app
if it doesnt work you need to install yarn globally by running this command npm install -g yarn
once you have done that run this command
yarn create react-app my-app
the new app should have the full project template

I fixed this issue doing the nexts steps:

npm rm -g create-react-app
npm install -g create-react-app
npx create-react-app my-app

And it works perfectly.

I fixed using yarn create react-app my-app.
I don't know why the creation isn't working with npm yet

I fixed this issue doing the nexts steps:

npm rm -g create-react-app
npm install -g create-react-app
npx create-react-app my-app

And it works perfectly.

Yeah it works. Perfect!

This helps https://github.com/facebook/create-react-app/issues/8097

I fixed this issue doing the nexts steps:

npm rm -g create-react-app
npm install -g create-react-app
npx create-react-app my-app

And it works perfectly.

Same problem here. Solved after these steps.
Tks!

I fixed this issue doing the nexts steps:

npm rm -g create-react-app
npm install -g create-react-app
npx create-react-app my-app

And it works perfectly.

https://github.com/facebook/create-react-app/issues/8097

| still not resolved.followed same steps as above

I fixed this issues by doing following steps:

npm uninstall -g create-react-app
npx create-react-app my-app

Works perfectly.
Note: Don't need to install create-react-app globally again, npx (executable version) handles everything on runtime (as virtual installation)

this solution didn't work for me, but generates fine using yarn.
npm -v 12.1
node -v 12.13.1
Installed npm/node using the download for macOS nodejs
previously had everything working, not sure what changed.

I fixed this issue doing the nexts steps:

npm rm -g create-react-app
npm install -g create-react-app
npx create-react-app my-app

And it works perfectly.

Hello WvlRampage, may i know how you figured out this fixture?

Already Solved At Here

Hi thank you for the help :)
On Mon, Dec 23, 2019 at 5:45 PM mabafa6831<EMAIL_ADDRESS>wrote:

Already Solved At Here
https://icetutor.com/question/template-not-provided-using-create-react-app/
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/facebook/create-react-app/issues/8088?email_source=notifications&email_token=AKJRPFZ5HW3TXPIELAUBVDDQ2FSVBA5CNFSM4JV3RV6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHSIDNA#issuecomment-568623540,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKJRPF6XDO7MNY5XV5B6SPTQ2FSVBANCNFSM4JV3RV6A
.


Impossible to install with --locked

Cargo.lock currently contains reference to proc-macro2 1.0.59, which can't be compiled on newer Rust - https://github.com/rust-lang/rust/issues/113152, https://github.com/dtolnay/proc-macro2/pull/391. As consequence, it's impossible to use cargo install create-tauri-app --locked.
Initially found on URLO.

Okay. Thank you for post the issue.


Allow stale data back in GetSpanInfo rule

GetSpanInfo allowed stale dependencies prior to #457 and was changed to disallow them for no good reason, which makes hovers unavailable when a dependency doesn't typecheck
While I was there, I also dropped early cutoff from GetHiFile as it seems unnecessary.
No impact in performance:
Before
name                       | samples | startup | setup | experiment | maxResidency
-------------------------- | ------- | ------- | ----- | ---------- | ------------
hover                      | 10      | 7.50s   | 0.00s | 9.71s      | 168MB
hover after edit           | 10      | 7.25s   | 0.00s | 13.61s     | 151MB
getDefinition              | 10      | 7.24s   | 0.00s | 5.92s      | 145MB
documentSymbols            | 100     | 7.25s   | 0.00s | 1.43s      | 28MB
documentSymbols after edit | 100     | 7.25s   | 0.00s | 2.77s      | 29MB
completions after edit     | 10      | 7.26s   | 0.00s | 9.79s      | 153MB
code actions               | 10      | 7.28s   | 5.06s | 0.39s      | 47MB
code actions after edit    | 10      | 7.38s   | 0.00s | 9.11s      | 173MB

After
name                       | samples | startup | setup | experiment | maxResidency
-------------------------- | ------- | ------- | ----- | ---------- | ------------
hover                      | 10      | 7.51s   | 0.00s | 9.85s      | 168MB
hover after edit           | 10      | 7.28s   | 0.00s | 13.58s     | 152MB
getDefinition              | 10      | 7.32s   | 0.00s | 5.99s      | 145MB
documentSymbols            | 100     | 7.33s   | 0.00s | 1.42s      | 28MB
documentSymbols after edit | 100     | 7.40s   | 0.00s | 2.79s      | 30MB
completions after edit     | 10      | 7.31s   | 0.00s | 9.85s      | 152MB
code actions               | 10      | 7.30s   | 5.12s | 0.39s      | 47MB
code actions after edit    | 10      | 7.20s   | 0.00s | 9.19s      | 173MB

I think the problem is that useWithStale isn't really using stale results. It's using up to the minute results, but the last working up to the minute results, hence I always get tripped up by it. Definitely the right change to make.
But why is removing the early cutoff from the HiFile the right thing to do? Before if the interface hash was the same twice be cut off computation. That seems valuable in some cases, and I imagine a case your benchmark doesn't hit? Generally, having a cutoff hash or similar is very cheap, provided computing the hash is itself cheap.

But why is removing the early cutoff from the HiFile the right thing to do? Before if the interface hash was the same twice be cut off computation. That seems valuable in some cases, and I imagine a case your benchmark doesn't hit? Generally, having a cutoff hash or similar is very cheap, provided computing the hash is itself cheap.

Just a desire to minimize things. We already get cut off if the GetModTime is the same for the interface and all its dependencies, right? But I guess that doesn't cover comments and whitespace edits, and given that the hash is likely cheap in this case, I'm happy to drop it. Thanks!


feat: add item route

Resolves #20
Add item route since we supports route with query now, with adding those missing fiels back

📝 Changed routes:

/item.server

(view full size)

Commit 1eb015d9dbe00614c25385871b10dc2698d63c94 (https://next-rsc-demo-a866tlpim.vercel.sh).


Inline Chat Widget: Icons do not align vertically

Testing #208414
Would be great if the feedback action buttons would vertically align with close/more action buttons

This has changed quite a bit but buttons are now aligned with the input box


FastAPI-like interface

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


Please update description to include lz (LZMA) write support

It's not mentioned on the Nuget repository page nor in the introduction section here on Github.
In my view it's one of the most important features and it not worthy of only being mentioned as a site-note somewhere ;-)

I'll take a PR for whatever you want written in :)
Just busy with work and a new baby so little headspace even for simple things.

Uhh....then you sure are busy, congratulation :-)
You write "Write support for zip/tar/bzip2/gzip are implemented." Just add "LZ(lzma)" to that sentence.
I've been skipping this project several time because I though it didn't had LZMA write support, but it turns out you implemented it long time ago, and that's really nice, just "spread the word":-)

Ill try to remember to do it when I'm back at a computer.
Actually, Jon Skeet implemented LZip read and write for Nodatime and I got LZMA/7Zip basics from contributors as well.
Always looking for someone to help maintain though since recent years I haven't had the time!

Just needed to update the readme.  I think the Nuget description was right


empty result set for 2012-01-01 08:00:00

I am following the tutorial_print.py and trying to run the script for 2012-01-01 08:00:00, but somehow I only got empty result, how can I troubleshoot it? Thanks!
related code
stream = pybgpstream.BGPStream(
    filter='collector rrc06 and type ribs',
    from_time="2011-01-01 08:00:00",
    until_time="2011-01-01 08:01:00",
)

for rec in stream.records():
    print(rec.status, rec.project +"."+ rec.collector, rec.time)
    for elem in rec:
        print("\t", elem.type, elem.peer_address, elem.peer_asn, \
            elem.type, elem.fields)

add collectors solve my issue.

@chenrui333 The issue is not related to BGPStream or to how you add the collectors. The issue you're seeing is because that RIPE RIS collector had actually almost no data in its RIB dump:
http://data.ris.ripe.net/rrc06/2011.01/
Scroll to the bottom of that page and you see all those RIBS are only 161 bytes each, whereas starting from Jan 13th 2011 they are 3MB.
Also, as a general recommendation, when you go after a specific RIB dump, it's better to indicate time ranges 5 or 10 minutes before and after the top of the hour instead of the exact hour and 1 min later. The RIB dumps are not always dumped at the exact top of the hour, and they're available only every 8 hours (RIPE RIS) or 2 hours (Route Views), so there is no risk of getting unwanted data from another RIB if you extend the time range of few minutes before and after, i.e., you will still get just that single RIB but you're sure to get it.


Mean and StdDev nifti files from Nipype's TSNR calculation

It would be useful to have the mean and std dev files produced by nipype's tsnr algorithm when computing the tsnr. Right now the compute_tsnr method only outputs the tsnr file.

The TSNR interface of nipype would write those images. However, these outputs are not connected anywhere and thus, deleted. There are two options here. 1) Run nipype (http://nipype.readthedocs.io/en/latest/users/config_file.html) with the config option remove_unnecessary_outputs = false; or 2) Connect these outputs to a datasink, as we currently do with the TSNR.
I'd be very happy to see a PR for this :D

@oesteban Could you take a look at this commit?
https://github.com/nih-fmrif/mriqc/commit/5eb1b44bc90ea6c1b71183352840a059dc474534
I added a datasink to save the outputs of the TSNR calc, but now the nifti files are being saved in both the folder created by the compute_tsnr node, and in the datasink node folder. Is this the correct behavior? Seems a bit wasteful to keep two copies of the files...

Sorry, I missed this out. Could you send a PR? it looks good to me :)

This is already in master.


First iteration of cone recognizer.

Given an image frame, respond with a message indicating:
Was cone found?
Left/right position in frame, if found.
Rough distance to cone, if found.
Quality indication. E.g., poor quality if multiple candidate cones found, or cone size is very small, or image shape is suspect.
Suggested method:
If necessary, downsample frame.
Maybe erode/dilate to remove noise.
Maybe blur.
Maybe kmeans to find interesting HSL partitions that might contain code.
HSL thresholding to find cone object.
Find contiguous interesting blob pixels.
Determine if blob has interesting shape.
Compute l/r offset in frame, ideally in degrees from center frame (needs camera info).
Estimate distance based on height or width or both.
Compute general information about detection quality (maybe). E.g., if means indicates several possible cone blobs, indicate poor quality.
The intention is that the recognizer is invoked relatively infrequently as it is probably slow. Use the recognizer to compute an orientation and speed to be used to move the robot and to advise if the cone is close enough to
Stop using GPS-only movements to get near the cone.
Stop using camera-based movements to get near the cone and invoke the move-to-touch goal.

Pictures of the cone from the r200.
The left and right angles are about 35 degrees, which is expected as the FOV is about 70 degrees horizontal. All of these measurements will have a deviation of several inches.

0 feet (touching)

1 foot

2 feet

4 feet

8 feet

16 feet

32 feet

16 feet, robot turned left

16 feet, robot turned right

An example of the first iteration of the cone recognizer. With the cone at the left of the frame at about 16 feet out, the cone is recognized at x: 48, y: 584 with a pixel area of 5221 square pixels.

First version is checked in.


Adjust spacing and punctuation for manifest validation messages

[x] Have you signed the Contributor License Agreement?
[ ] Are you working against an Issue?

Microsoft Reviewers: Open in CodeFlow

/azp run


Cannot launch process with debugger attached in command line debug scenarios

Description
Debugging of test code executed in a separate process is possible if the test adapter starts the new process with IFrameworkHandle.LaunchProcessWithDebuggerAttached.
However, this call fails if the debug session is started from the command line.
The call succeeds only if the debug session is started from Visual Studio test explorer.
Steps to reproduce

Set environment variable VSTEST_HOST_DEBUG=1
Run dotnet test
Attach debugger to host process
Use a test adapter that calls IFrameworkHandle.LaunchProcessWithDebuggerAttached(...) to start a new process with debugger attached

Expected behavior
The test execution should be in "debug mode" (as we set the environment variable and attach a debugger) and the test adapter should be able to start a process with the debugger attached.
Actual behavior
System.InvalidOperationException: This operation is not allowed in the context of a non-debug run.
at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Adapter.FrameworkHandle.LaunchProcessWithDebuggerAttached(String filePath, String workingDirectory, String arguments, IDictionary`2 environmentVariables)

Just in case this helps: I'm not sure of the full context but this jumped out to me when looking at the condition that is throwing in the description above.
See https://github.com/microsoft/vstest/blob/ad32654bc155a059fda263f0ec99b445058d84ea/src/Microsoft.TestPlatform.CrossPlatEngine/Client/InProcessProxyexecutionManager.cs#L64
and the way that isDebug is set just below that at https://github.com/microsoft/vstest/blob/ad32654bc155a059fda263f0ec99b445058d84ea/src/Microsoft.TestPlatform.CrossPlatEngine/Client/InProcessProxyexecutionManager.cs#L73
But, the ProxyExecutionManager that the "should be in sync with" comment refers to uses a more involved condition for isDebug: https://github.com/microsoft/vstest/blob/ad32654bc155a059fda263f0ec99b445058d84ea/src/Microsoft.TestPlatform.CrossPlatEngine/Client/ProxyExecutionManager.cs#L186-L188

No activity.


docs: make consistent, cleanup

Cleans up the READMEs to be clearer and consistent across tools.

I'm refactoring the whiskers in README in #111 so I'd appreciate if you could revert those changes for that here.

I'm refactoring the whiskers README in #111 so I'd appreciate if you could revert those changes for that here.

I like the usage of the table for installation instructions. Maybe I do that for each of the READMEs here and there wouldn't be a conflict after merging?

I think the table format only applies to catwalk and puccinier aside from whiskers, I don't mind if you update it for those but I'm planning on merging #111 probably right after this one (it's marinated long enough lol) so reverting the entire file would be best for me 👍

regarding the badges, we could still improve them by changing the issue button to https://github.com/catppuccin/toolbox/issues/new?labels=whiskers etc.
Note that puccinier doesn't have a label since it's effectively EOL

I think the table format only applies to catwalk and puccinier aside from whiskers

Aren't those... the only two other tools with READMEs?

regarding the badges, we could still improve them by changing the issue button to catppuccin/toolbox/issues/new?labels=whiskers etc. Note that puccinier doesn't have a label since it's effectively EOL

Will do... I'll just leave Puccinier as is I guess.


Links break when title contains email address

The Markdown parsing breaks when a link title contains an email-address-like string surrounded by spaces.
Input:
[Inline](http://showdownjs.com/ "<EMAIL_ADDRESS>")

Output:

<a href="http://showdownjs.com/" title=" <a<EMAIL_ADDRESS>">Inline

Simplified example: http://demo.showdownjs.com/#!/[Inline](http://showdownjs.com/ "<EMAIL_ADDRESS>")

[Reference][1]

[1]: http://showdownjs.com/ "<EMAIL_ADDRESS>"
So a title like Email me at<EMAIL_ADDRESS>to say hi! would break the output.

confirmed

The latest version of showdown translates this:
[Inline](http://showdownjs.com/ "<EMAIL_ADDRESS>")

into this:

<a href="http://showdownjs.com/" title="<EMAIL_ADDRESS>">Inline

I think this is what is expected. Please re-open this issue if I am not correct, or we need to re-address this.


Update index.json for batch extension

This checklist is used to make sure that common guidelines for a pull request are followed.

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

If this PR is for a new extension or change to an existing extension, use the following to try out the changes in this PR:
docker run -it microsoft/azure-cli:latest
export EXT=<NAME>
pip install --upgrade --target ~/.azure/cliextensions/$EXT "git+https://github.com/bgklein/azure-cli-extensions.git@patch-1#subdirectory=src/$EXT&egg=$EXT"

@bgklein if you use the azdev extension publish command, you should be able to do all of this in a single step and eliminate the 2 PR system. Ping me on Teams if you have questions.