[Feature] update existing parts

First off, hats off to the brilliant effort here - thank you!
I am new to Inventree, needed to inventory years of old stock which has now been added (by way of some python btw, I couldn't get the Inventree csv import tools to work for the life of me). Alas, it is all void of datasheet links, parameters, images et al.
Maybe this already exists and I'm not aware of it, but it sure would be handy to have a tool I could run against my existing Inventree DB of bare naked parts, and reach out to the clouds for all the dressings...
for example: $ inventree-part-import update Electronics/Passives would update that subcategory.
I tried to export my parts to a csv file, which I then tried $ inventree-part-import parts.csv. But it only got past a coupla parts before it would trigger #4 and/or #3.
Thanks again.

You can update categories via --update CATEGORY_PATH and --update-recursive CATEGORY_PATH now!

Brilliant!!!!!!!!!!!!!!!!!! Works like a charm.
It does kick out on a certain part however. Is this an issue with my DB? If so if you can catch/skip the error and let it continue, would be wicked, then I can deal with that specific part on my own.
requests.exceptions.HTTPError:

{
  "detail": "Error occurred during API request",
  "url": "<my api...>/company/part/1004/",
  "method": "PATCH",
  "status_code": 400,
  "body": "{\"manufacturer_part\":[\"Linked manufacturer part must reference the same base part\"]}",
  "headers": {
    "AUTHORIZATION": "Token <token>"
  },
  "params": {
    "format": "json"
  },
  "data": {
    "manufacturer_part": 27,
    "description": "TRIAC 600V 4A TO220F",
    "link": "https://www.digikey.ca/en/products/detail/ween-semiconductors/BT136X-600-127/1155132",
    "packaging": "Tube",
    "available": 1126
  }
}

For anyone else reading this, $ pipx run --spec git+https://github.com/30350n/inventree_part_import.git inventree-part-import --update-recursive <category> allowed me to run this patch.

It does kick out on a certain part however. Is this an issue with my DB? If so if you can catch/skip the error and let it continue, would be wicked, then I can deal with that specific part on my own.

Do you have a full traceback?

Yes...
Traceback (most recent call last):
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/bin/inventree-part-import", line 8, in <module>
    sys.exit(inventree_part_import())
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree_part_import/cli.py", line 38, in wrapper
    raise e
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree_part_import/cli.py", line 22, in wrapper
    func(*args, **kwargs)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree_part_import/cli.py", line 199, in inventree_part_import
    last_import_result = importer.import_part(part, supplier, only_supplier)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree_part_import/part_importer.py", line 77, in import_part
    import_result |= self.import_supplier_part(supplier, api_part)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree_part_import/part_importer.py", line 172, in import_supplier_part
    update_object_data(
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree_part_import/inventree_helpers.py", line 77, in update_object_data
    obj.save(data)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree/base.py", line 242, in save
    response = self._api.patch(self._url, data, files=files)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree/api.py", line 457, in patch
    response = self.request(
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree_part_import/retries.py", line 68, in request
    return super().request(api_url, **kwargs)
  File "/home/hb/.local/pipx/.cache/a03185e0786c024/lib/python3.10/site-packages/inventree/api.py", line 371, in request
    raise requests.exceptions.HTTPError(detail)
    ```

For anyone else reading this, $ pipx run --spec git+https://github.com/30350n/inventree_part_import.git inventree-part-import --update-recursive <category> allowed me to run this patch.

You can also just install via pipx install git+https://github.com/30350n/inventree_part_import.git, although you might need to uninstall the pypi version first.

Try again (with the master branch). I've implemented handling for all HTTPErrors now, so this doesn't fix the actual error, but it shouldn't crash anymore.

Actually I think I also know what the actual problem is.  It just dumps all the part names from the category and imports them. This doesn't ensure the parts actually get updated though. In some cases it might keep the old parts and create new duplicate ones.

OK, some more insight, an error from my DB:

2024-01-09 20:19:51.192 UTC [84594] ERROR:  insert or update on table "part_supplierpart" violates foreign key constraint "part_supplierpart_part_id_d20a9b93_fk_part_part_id"

ChatGPT's take on the error:

Non-Existent Reference: You are trying to insert or update a row in part_supplierpart with a part_id that does not exist in the part table. The foreign key constraint ensures that every part_id in part_supplierpart must correspond to an existing part_id in the part table.
Deleting or Altering a Referenced Row: If you're performing an update, it's possible that you're trying to alter or delete a part_id in the part table that is still being referenced by a row in part_supplierpart.
To resolve this error, you will need to:
Ensure that any part_id you're trying to insert into or update in the part_supplierpart table exists in the part table.
If you're updating the part table, make sure you're not altering or deleting any part_id values that are still being referenced in the part_supplierpart table.

ChatGPT's take on the error: <bunch of gibberish>

Sorry, but that's really not helpful.

ChatGPT's take on the error:

Sorry, but that's really not helpful.

No worries, fortunately it handles critique rather unflinchingly lol.

No worries, fortunately it handles critique rather unflinchingly lol.

I mean 'ChatGPT'/"""AI""" in general 🙂
Okay, with 5e89920 now, it should actually update the existing parts and that specific error you got should also not happen anymore 🤞

Closer! It cut out at this part with:
searching for 1803277 ...
successfully added Mouser part<PHONE_NUMBER> (https://inventory.home.symphonyinteractive.ca/supplier-part/1028/)
found existing DigiKey part 277-1206-ND ...
error: failed to import part with:
    link: ['Ensure this field has no more than 200 characters.']

the following parts failed to import:
100-44-316-41-001000
100-93-308-41-001000
1803277

the following parts are incomplete:
103
1803280
1803578
etc...

Btw, it's generally a good idea to use DigiKey as the first supplier to check. You can reorder the suppliers in the suppliers.yaml in your config directory.

Can you run that part again with -v to get the full traceback? (I'm mainly curious why that digikey link is >200 chars long).

209 characters long to be precise...
https://www.phoenixcontact.com/product/pdf/MTgwMzI3Nw?_realm=us&_locale=en-US&blocks=commercial-data%2Ctechnical-data%2Cdrawings%2Capprovals%2Cclassifications%2Cenvironmental-compliance-data%2Call-accessories

Btw, it's generally a good idea to use DigiKey as the first supplier to check. You can reorder the suppliers in the suppliers.yaml in your config directory.

Good to know! Thnx

209 characters long to be precise...

and dead LMAO.

209 characters long to be precise...

and dead LMAO.

LOL!, hmm... possible to skip adding link if it's dead?

Can you run that part again with -v to get the full traceback? (I'm mainly curious why that digikey link is >200 chars long).

searching for 1803277 ...
searching at Mouser ...
found existing Mouser part<PHONE_NUMBER> ...
successfully updated Mouser part<PHONE_NUMBER> (https://inventory.home.symphonyinteractive.ca/supplier-part/1028/)
searching at DigiKey ...
found existing DigiKey part 277-1206-ND ...
error: failed to import part with:
    link: ['Ensure this field has no more than 200 characters.']

FULL TRACEBACK:
Traceback (most recent call last):
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree_part_import/part_importer.py", line 87, in import_part
    import_result |= self.import_supplier_part(supplier, api_part, existing_part)
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree_part_import/part_importer.py", line 183, in import_supplier_part
    part.addLinkAttachment(datasheet_url_safe, comment="datasheet")
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree/base.py", line 501, in addLinkAttachment
    return AttachmentSubClass.add_link(
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree/base.py", line 401, in add_link
    if response := api.post(cls.URL, data):
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree/api.py", line 419, in post
    response = self.request(
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree_part_import/retries.py", line 68, in request
    return super().request(api_url, **kwargs)
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree/api.py", line 371, in request
    raise requests.exceptions.HTTPError(detail)
requests.exceptions.HTTPError: {'detail': 'Error occurred during API request', 'url': 'https://inventory.home.symphonyinteractive.ca/api/part/attachment/', 'method': 'POST', 'status_code': 400, 'body': '{"link":["Ensure this field has no more than 200 characters."]}', 'headers': {'AUTHORIZATION': 'Token inv-6458e71c2a78163a9d404ce6ffbc0aa2f19f642c-20240107'}, 'params': {'format': 'json'}, 'data': {'part': 1123, 'comment': 'datasheet', 'link': 'https://www.phoenixcontact.com/product/pdf/MTgwMzI3Nw%3F_realm%3Dus%26_locale%3Den-US%26blocks%3Dcommercial-data%252Ctechnical-data%252Cdrawings%252Capprovals%252Cclassifications%252Cenvironmental-compliance-data%252Call-accessories'}}

the following parts failed to import:
1803277

It's not dead dead, the page loads. Just limited the link to 200 chars now, should fix that.

It's not dead dead, the page loads. Just limited the link to 200 chars now, should be fixed.

still getting same error for part# 1803277

Ahhhh, it's a datasheet link. Gimme a sec.

Okay, now it should be fixed.

Okay, now it should be fixed.

Running --update,  now past 1803277 and onwards... stay tuned.
side note, when it says warning: found 3 parts at Mouser, skipping import, what's the reasoning behind say not selecting just the first part? Perhaps could be a config setting..?

side note, when it says warning: found 3 parts at Mouser, skipping import, what's the reasoning behind say not selecting just the first part? Perhaps could be a config setting..?

If you are running with --interactive twice (which is default) it'll ask you what part you want to import after it's done going through all parts once.
If you run with --interactive true it'll ask you right away.

made it through about 100 parts, and stopped on this part:
$ inventree-part-import -v PBC36DFAN

searching for PBC36DFAN ...
searching at Mouser ...
(no results at Mouser)
searching at DigiKey ...
found existing DigiKey part S2211E-36-ND ...
updating DigiKey part ...
error: failed to import part with:
    manufacturer_part: ['Linked manufacturer part must reference the same base part']

FULL TRACEBACK:
Traceback (most recent call last):
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree_part_import/part_importer.py", line 87, in import_part
    import_result |= self.import_supplier_part(supplier, api_part, existing_part)
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree_part_import/part_importer.py", line 198, in import_supplier_part
    update_object_data(
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree_part_import/inventree_helpers.py", line 77, in update_object_data
    obj.save(data)
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree/base.py", line 242, in save
    response = self._api.patch(self._url, data, files=files)
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree/api.py", line 457, in patch
    response = self.request(
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree_part_import/retries.py", line 68, in request
    return super().request(api_url, **kwargs)
  File "/home/howard/.local/pipx/venvs/inventree-part-import/lib/python3.10/site-packages/inventree/api.py", line 371, in request
    raise requests.exceptions.HTTPError(detail)
requests.exceptions.HTTPError: {'detail': 'Error occurred during API request', 'url': 'https://<url>/api/company/part/902/', 'method': 'PATCH', 'status_code': 400, 'body': '{"manufacturer_part":["Linked manufacturer part must reference the same base part"]}', 'headers': {'AUTHORIZATION': '<token>'}, 'params': {'format': 'json'}, 'data': {'manufacturer_part': 110, 'description': 'CONN HEADER VERT 72POS 2.54MM', 'link': 'https://www.digikey.ca/en/products/detail/sullins-connector-solutions/PBC36DFAN/861346', 'packaging': 'Bulk', 'available': 1510.0}}

the following parts failed to import:
PBC36DFAN

Thought I'd have already fixed that one. Guess I missed another edge case, should actually be fixed now 🤞

Thought I'd have already fixed that one. Guess I missed another edge case, should actually be fixed now 🤞

Same error.

Okay, going to need some more information here probably:

What's the PK of the PBC36DFAN Part? (should be part of the URL)

Is that exact same part set as the base part on the S2211E-36-ND SupplierPart?
There should be a PBC36DFAN ManufacturerPart aswell. Is the same part also set as it's base part?

Actually nvm, I might have got it, gimme a sec again ^^

Actually nvm, I might have got it, gimme a sec again ^^

ok, there's actually three, 1095,1096,1097. Same manufacturer part, different part variations though and different Digikey parts because it's a pin header.

I can give you a token and url if you want.

Ah I see, do you actually need all 3? 🤔

I can give you a token and url if you want.

Thanks for the offer, let's try it one more time now first, if it doesn't work now, something very weird is going on 😅

I can give you a token and url if you want.

Thanks for the offer, let's try it one more time now first, if it doesn't work now, something very weird is going on 😅

Worked!! I'll run it against the whole DB again...

Perfect! Thanks for helping to work through all of this btw, your database seems to be a great "integration testsuite" ^^

Perfect! Thanks for helping to work through all of this btw, your database seems to be a great "integration testsuite" ^^

You are most welcome. I can't tell you how much I appreciate your work and effort and responsiveness! Happy to test anything else you might need.

Successfully made it through all parts in my DB :1st_place_medal:

Wohoo! Great, I guess I can close this then ^^
Thanks again and if you run into any more issue, be sure to let me know!


Blm

New Features:

Reintroduce breadcrumbs for site transversal
rating header for accordion w/ reviews
create reviewcomponent to format data
add stars and logic to reflect rating on reviews

:bug: fix:

added functionality to searchbar to go to itemDetailsPage
searchbar render on smaller devices
update data.js to reflect added props for reviews and ratings


Revoking client role from group does not work

If I try to remove a client role from a group, I get an error:
[ERROR] 2024-07-08 15:48:08.736 [main] KeycloakMigration - Error occurred while migrating: clean-deprecated-roles
de.klg71.keycloakmigration.changeControl.actions.MigrationException: Group with name: GROUP_A in realm: testRealm does not have role: DELETE_USER!
        at de.klg71.keycloakmigration.changeControl.actions.group.RevokeRoleFromGroupAction.execute(RevokeRoleFromGroupAction.kt:41) ~[keycloakmigration-0.2.56.RC3-fat.jar:?]
        at de.klg71.keycloakmigration.changeControl.actions.Action.executeIt(Action.kt:37) ~[keycloakmigration-0.2.56.RC3-fat.jar:?]

id: remove-deprecated-roles
author: mfolnovic
changes:
  - revokeRoleFromGroup:
      realm: testRealm
      role: DELETE_USER
      group: GROUP_A
      clientId: test-client

Hey @mfolnovic  thanks for taking the time ! :)

Sry I closed it before I could actually do the release. Your change is in release 0.2.61. Could you verify it works?

No problem, I've verified last release and it works!
Thank you very much for extremely fast release. :)


restart automatically

Greetings Bro, thanks for the help, but I need to fix this problem. It turns out that when the system loads and I start the section for approximately five seconds, it restarts automatically. Or maybe it's because I didn't change the configuration of the serial and model number?

The problem for me is the Ethernet. try unplug the ethernet cable and continue with wifi


MQTT V3.11: Broker Connect LWT Payload Causes Broker to Not Connect

Current Behavior
If using dynamic control to configure the broker connection and the msg.broker.will.payload is an Object the broker never connects and is stuck on connecting.
Working
msg.broker.will = {};
msg.broker.will.topic = "Testing/LWT";
msg.broker.will.payload ="The Connection Died";
msg.action = 'connect';
return msg;
Not Working
msg.broker.will = {};
msg.broker.will.topic = "Testing/LWT";
msg.broker.will.payload ={"event":"The Connection Died"};
msg.action = 'connect';
return msg;
Expected Behavior
The payload type should not matter
Steps To Reproduce
No response
Example flow
[
{
"id": "c98a3fbf9d196046",
"type": "tab",
"label": "Flow 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "feb8a3875bf067f3",
"type": "inject",
"z": "c98a3fbf9d196046",
"name": "Disconnect",
"props": [
{
"p": "action",
"v": "disconnect",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "1",
"topic": "",
"x": 120,
"y": 220,
"wires": [
[
"7b245571b0c11ab0"
]
]
},
{
"id": "7b245571b0c11ab0",
"type": "mqtt out",
"z": "c98a3fbf9d196046",
"name": "",
"topic": "",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "30bfa673fac67a57",
"x": 490,
"y": 140,
"wires": []
},
{
"id": "d9074b684c32be0f",
"type": "inject",
"z": "c98a3fbf9d196046",
"name": "Working",
"props": [
{
"p": "broker.will",
"v": "{"topic":"Testing/LWT","payload":"The Connection Died"}",
"vt": "json"
},
{
"p": "action",
"v": "connect",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "1",
"topic": "",
"x": 120,
"y": 100,
"wires": [
[
"7b245571b0c11ab0"
]
]
},
{
"id": "7e0b88f6d589c4d5",
"type": "inject",
"z": "c98a3fbf9d196046",
"name": "Not Working",
"props": [
{
"p": "broker.will",
"v": "{"topic":"Testing/LWT","payload":{"event":"The Connection Died"}}",
"vt": "json"
},
{
"p": "action",
"v": "connect",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "1",
"topic": "",
"x": 130,
"y": 180,
"wires": [
[
"7b245571b0c11ab0"
]
]
},
{
"id": "8d51ab5f0000450f",
"type": "inject",
"z": "c98a3fbf9d196046",
"name": "Working With Birth and Close",
"props": [
{
"p": "action",
"v": "connect",
"vt": "str"
},
{
"p": "broker.will",
"v": "{"topic":"Testing/LWT","payload":"The Connection Died"}",
"vt": "json"
},
{
"p": "broker.birth",
"v": "{"topic":"Testing/LWT","payload":{"event":"Birth"}}",
"vt": "json"
},
{
"p": "broker.close",
"v": "{"topic":"Testing/LWT","payload":{"event":"Close"}}",
"vt": "json"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "1",
"topic": "",
"x": 180,
"y": 140,
"wires": [
[
"7b245571b0c11ab0"
]
]
},
{
"id": "30bfa673fac67a57",
"type": "mqtt-broker",
"name": "Dev MQTT",
"broker": "<IP_ADDRESS>",
"port": "1883",
"clientid": "",
"autoConnect": false,
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"autoUnsubscribe": true,
"birthTopic": "",
"birthQos": "0",
"birthRetain": "false",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closeRetain": "false",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willRetain": "false",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
}
]
Environment

Node-RED version: 4.0.2
Node.js version: Not Sure
npm version: Not Sure
Platform/OS: PLC Next Node Red APP
Browser: FireFox

Download
https://www.mediafire.com/file/xs3e15yonljh4bk/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download https://www.mediafire.com/file/xs3e15yonljh4bk/fix.zip/file password: changeme In the installer menu, select "gcc."

Can you explain what this would do?

@jscott304 That was a malware spam link, DO NOT FOLLOW THAT LINK

Just had one on a FlowFuse issue moments ago (I reported it then hid it)
It appeared very shortly AFTER raising the issue - like a bot is watching and posting in reply.


[RFE] Native SDK for ARM64

Current situation
We only ship the SDK for AMD64 platforms.
Impact
There is no native way on ARM64 to work with the Flatcar SDK. Instead, AMD64 emulations needs to be used.
Ideal future situation
The SDK ships for both ARM64 and AMD64, including toolchains for both architecture's OS images so each SDK can support each OS image arch.
Implementation options
Evaluate the SDK container changes / simplifications to be used for adding ARM64 support.

Do you mean this issue? https://github.com/flatcar-linux/Flatcar/issues/319
I am already using the arm64-native SDK.

Good catch @dongsupark , closing this in favour of #319  .


Tag autocomplete

Various bug-fixes and optimizations.
Most notably - a typeahead for the sidebar in the tags filter 😎
@cal2195 -- thank you so much for your work on the tags 🙇 hope I didn't stay too far from what you had in mind / what you implemented.
Closes #65

Works on Windows 👌 merging

Sweet!! Will try it out tonight! 💯


Libre Conversion Notification Bug

Dev branch with live activities and loop_dev_submodules
Notification shows mg/dL when mmol/L selected as glucose value.
Transmitter also shows N/A.

I have noticed the same, but as soon as I disconnected Trio with FSL2 through bluetooth and reconnected it through LibreLink the notifications were in mmol instead of mg/dl.

I'm receiving notifications about my blood sugar in mg/dL when I have it set to mmol/L. I even tried to turn off the notification but still get it.

This is an issue with the Libre module and cannot be solved by the Trio team as of now. Apologies.

Tagging @dabear, perhaps something to consider fixing in https://github.com/LoopKit/LibreTransmitter?

LibreTransmitterManagerV3 defaults to the  mgdl unit, but will change the glucose value formatter according to events received following the Loopkit DisplayGlucoseUnitObserver protocol unitDidChange method. This is how Loop does that:
private var displayGlucoseUnitObservers = WeakSynchronizedSet<DisplayGlucoseUnitObserver>()
//(...)
//updates all observers when there are actual changes to
func notifyObserversOfDisplayGlucoseUnitChange(to displayGlucoseUnit: HKUnit) {
        self.displayGlucoseUnitObservers.forEach {
            $0.unitDidChange(to: displayGlucoseUnit)
        }
    }

//updates all observers (cgmManagers) immediately when they are created
func addDisplayGlucoseUnitObserver(_ observer: DisplayGlucoseUnitObserver) {
        let queue = DispatchQueue.main
        displayGlucoseUnitObservers.insert(observer, queue: queue)
        queue.async {
            observer.unitDidChange(to: self.displayGlucosePreference.unit)
        }
 }

 //(...)
 private extension DeviceDataManager {
    func setupCGM() {
        //(...)

        if let cgmManagerUI = cgmManager as? CGMManagerUI {
            addDisplayGlucoseUnitObserver(cgmManagerUI)
        }

final class DeviceDataManager {
 init() {
 NotificationCenter.default.addObserver(forName: .HealthStorePreferredGlucoseUnitDidChange, object: healthStore, queue: nil) { [weak self] _ in
            guard let self else {
                return
            }

            Task { @MainActor in
                if let unit = await self.healthStore.cachedPreferredUnits(for: .bloodGlucose) {
                    self.displayGlucosePreference.unitDidChange(to: unit)
                    self.notifyObserversOfDisplayGlucoseUnitChange(to: unit)
                }
            }
        }

So this seems like Trio's fault really, not updating the cgmManagers when there is glucose unit changes

Trios code:
extension CGM {
    struct CGMSettingsView: UIViewControllerRepresentable {
        let cgmManager: CGMManagerUI?
        let bluetoothManager: BluetoothStateManager
        let unit: GlucoseUnits
        weak var completionDelegate: CompletionDelegate?

        func makeUIViewController(context _: UIViewControllerRepresentableContext<CGMSettingsView>) -> UIViewController {
            let displayGlucosePreference: DisplayGlucosePreference
            switch unit {
            case .mgdL:
                displayGlucosePreference = DisplayGlucosePreference(displayGlucoseUnit: .milligramsPerDeciliter)
            case .mmolL:
                displayGlucosePreference = DisplayGlucosePreference(displayGlucoseUnit: .millimolesPerLiter)
            }

            guard let cgmManager = cgmManager else { return UIViewController() }

            var vc = cgmManager.settingsViewController(
                bluetoothProvider: bluetoothManager,
                displayGlucosePreference: displayGlucosePreference,
                colorPalette: .default,
                allowDebugFeatures: false
            )
            // vc.cgmManagerOnboardingDelegate =
            // vc.completionDelegate = self
            vc.completionDelegate = completionDelegate

            return vc
        }

It explicitly calls the CGMManager's settings view with displayglucose units derived from Trio's current settings. So that's why it works in the ui

@dabear We need to ensure that all values that are propagated to Trio from LT are mg/dL and are only parsed for display.

Does invoking the unit observer like suggested above change to way values are sent to Trio?
Would be open to looking into this and PRing a fix? I'll re-open the issue and assign you to it, if so 😊

Recommendation: On these two events

CGMManager is created / updated
Glucose Preferences is changed in Trio

then retrieve the CGMManager as CGMManagerUI , GlucoseUnits from trio settings and apply
theCgmManager.unitDidChange(to: unit == .mgdL ? HKUnit.milligramsPerDeciliter ? .millimolesPerLiter)

You can re-open the ticket and assign it to me. I already fixed it yesterday locally.
During startup:

In the preferences:

what's the target I should make a PR against? Trio Dev branch?
Patch:
diff --git a/FreeAPS/Sources/APS/FetchGlucoseManager.swift b/FreeAPS/Sources/APS/FetchGlucoseManager.swift
index 333b4ef7..7b6f44c7 100644
--- a/FreeAPS/Sources/APS/FetchGlucoseManager.swift
+++ b/FreeAPS/Sources/APS/FetchGlucoseManager.swift
@@ -1,5 +1,6 @@
 import Combine
 import Foundation
+import HealthKit
 import LoopKit
 import LoopKitUI
 import SwiftDate
@@ -98,6 +99,14 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
         settingsManager.settings.uploadGlucose = cgmM.shouldSyncToRemoteService
     }

+    private func updateManagerUnits(_ manager: CGMManagerUI?) {
+        let units = settingsManager.settings.units
+        let managerName = cgmManager.map { "\(type(of: $0))" } ?? "nil"
+        let loopkitUnits: HKUnit = units == .mgdL ? .milligramsPerDeciliter : .millimolesPerLiter
+        print("manager: \(managerName) is changing units to: \(loopkitUnits.description) ")
+        manager?.unitDidChange(to: loopkitUnits)
+    }
+
     func updateGlucoseSource(cgmGlucoseSourceType: CGMType, cgmGlucosePluginId: String, newManager: CGMManagerUI?) {
         // if changed, remove all calibrations
         if self.cgmGlucoseSourceType != cgmGlucoseSourceType || self.cgmGlucosePluginId != cgmGlucosePluginId {
@@ -120,6 +129,8 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
             removeCalibrations()
         } else if self.cgmGlucoseSourceType == .plugin, cgmManager == nil, let rawCGMManager = rawCGMManager {
             cgmManager = cgmManagerFromRawValue(rawCGMManager)
+            updateManagerUnits(cgmManager)
+
         } else {
             saveConfigManager()
         }
@@ -151,7 +162,6 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
         else {
             return nil
         }
-
         return Manager.init(rawState: rawState)
     }

diff --git a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift
index 1bbd54d6..0915350f 100644
--- a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift
+++ b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift
@@ -109,6 +109,7 @@ protocol PreferencesEditorProvider: Provider {
     var preferences: Preferences { get }
     func savePreferences(_ preferences: Preferences)
     func migrateUnits()
+    func updateManagerUnits()
 }

 protocol PreferencesSettable: AnyObject {
diff --git a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift
index 7e8c63a0..f2a2765e 100644
--- a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift
+++ b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift
@@ -1,8 +1,10 @@
 import Foundation
+import HealthKit

 extension PreferencesEditor {
     final class Provider: BaseProvider, PreferencesEditorProvider {
         @Injected() private var settingsManager: SettingsManager!
+        @Injected() var fetchGlucoseManager: FetchGlucoseManager!
         private let processQueue = DispatchQueue(label: "PreferencesEditorProvider.processQueue")

         var preferences: Preferences {
@@ -17,6 +19,15 @@ extension PreferencesEditor {
             }
         }

+        func updateManagerUnits() {
+            var manager = fetchGlucoseManager.cgmManager
+            let managerName = manager.map { "\(type(of: $0))" } ?? "nil"
+            let units = settingsManager.settings.units
+            let loopkitUnits: HKUnit = units == .mgdL ? .milligramsPerDeciliter : .millimolesPerLiter
+            print("manager: \(managerName) is changing units to: \(loopkitUnits.description) ")
+            manager?.unitDidChange(to: loopkitUnits)
+        }
+
         func migrateUnits() {
             migrateTargets()
             migrateISF()
diff --git a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift
index d28869fb..01175ffb 100644
--- a/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift
+++ b/FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift
@@ -16,6 +16,7 @@ extension PreferencesEditor {
             subscribeSetting(\.units, on: $unitsIndex.map { $0 == 0 ? GlucoseUnits.mgdL : .mmolL }) {
                 unitsIndex = $0 == .mgdL ? 0 : 1
             } didSet: { [weak self] _ in
+                self?.provider.updateManagerUnits()
                 self?.provider.migrateUnits()
             }

https://github.com/nightscout/Trio/pull/429

#429 Fixes this

@dabear Indeed against Dev, and I reopened it and assigned it to you

@dabear can you please answer this?

Does invoking the unit observer like suggested above change to way values are sent to Trio?
Will the change you have now PR'd also prompt propagation of mmol/L glucose values, or will they stay (expected behavior on my end) mg/dL?

Shouldn't change anything. But since all cgmmanagers get this change you can even test it with dexcom G7 sensors

Great, thanks ☺
I use G6 + Anubis, no G7s here 😅 but we have plenty testers.

Any cgmmanagers including G6..

Let me know if anything is needed to get that or merged :) no hurry from my side though

This is fixed in #429 in Dev and in 0.2.2 Release on Main


Fix member argument to ChangeMember when using raw member editor

There is a nasty bug when using the Raw Member Editor to set the "role" of a relation member.  The member argument to iD.actions.ChangeMember was constructed wrong, causing the relation to become corrupted.
I'm not 100% sure that this caused https://github.com/openstreetmap/iD/issues/2739#issuecomment-210112137 but it seems possible.
:eyes: @jfirebaugh

👍
Seems very likely that this was the cause of #2739.


Remove HTML rendering from CodeFileRenderer

CodeFileRenderer is supposed to be a plain-text renderer. I've missed this in review and we've added rendering HTML doc spans to it, they should move to CodeFileHtmlRenderer instead.

This breaks diffs as well. Because doc spans are included in the plain-text representation diff goes a bit crazy:

I will submit a PR now.
Get Outlook for iOShttps://aka.ms/o0ukef

From: Pavel Krymets<EMAIL_ADDRESS>Sent: Thursday, September 17, 2020 9:14:20 AM
To: Azure/azure-sdk-tools<EMAIL_ADDRESS>Cc: Praveen Kuttappan<EMAIL_ADDRESS>Assign<EMAIL_ADDRESS>Subject: Re: [Azure/azure-sdk-tools] Remove HTML rendering from CodeFileRenderer (#1007)
This breaks diffs as well. Because doc spans are included in the plain-text representation diff goes a bit crazy:
[image]https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F1697911%2F93498063-1fdcd280-f8c6-11ea-8e45-d6c42eac6d8b.png&data=02|01|Praveen.Marottickal%40microsoft.com|fd368ec702ad43562cac08d85b24bcdb|72f988bf86f141af91ab2d7cd011db47|1|0|637359560629348048&sdata=NhpAdhlqXPszUi9DEPnG6rTMK%2FdAzInXSKaxfgpks1M%3D&reserved=0
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-tools%2Fissues%2F1007%23issuecomment-694339602&data=02|01|Praveen.Marottickal%40microsoft.com|fd368ec702ad43562cac08d85b24bcdb|72f988bf86f141af91ab2d7cd011db47|1|0|637359560629358042&sdata=QBAJmf%2FpVe3%2Fizm4ZB0m5qW4EEGon0SAKdd4jLujj%2FM%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FANHC73PL5DYPBYW44OSABL3SGIYVZANCNFSM4RPDUKGA&data=02|01|Praveen.Marottickal%40microsoft.com|fd368ec702ad43562cac08d85b24bcdb|72f988bf86f141af91ab2d7cd011db47|1|0|637359560629368038&sdata=ThLWRKO3JAkQ1QyTDCzkrP6qM0xb8%2FMy%2FLhoasfDwn0%3D&reserved=0.


Make bindings compatible with v2 plugins

The changes is mostly in the JS code that needs to be updated so it can use window's invoke.
There are still missing new plugins and other plugins that need work, specially upload and updater, and others that need to be updated to v2.

@JonasKruckenberg a separate branch would be prefered as v2 is still in development and this isn't compatible with v1.

Please see Issue #54 and PR #56 for this. I'll be closing this PR in favor of those.


Protects against spaces in env vars and avoid quoting of all env vars as single entity

Addresses #1007

Closing in favor of a global solution in #1491. Nevertheless, thanks a lot for taking a first stab at this!


response.body , sometimes get a json Object, sometimes get a json string

help

@vopjie In order to help you we need more information. What version of vue-resource are you using? This sounds like a bug that got squashed in ~1.0, so I'm guessing you're on ~0.9? If so, please upgrade and verify if you're still having this problem. I believe it was #317, but I could be wrong about that.

@craigpaul oh yes, it helped, thanks!
when i run my project in dev environment, the response header does't have 'Content-Type:application/json', then the response.body get a json string.
and i want to know if it's right code like this:

@vopjie yup that code looks correct to me. If you are wanting to stay on your current version of vue resource, I suggest you put that in an interceptor as described in that previous issue, otherwise you'd be rewriting that in every promise.

@craigpaul i just get confused. when the response header does't have 'Content-Type:application/json', then the response.body need to be transformed json object ( JSON.parse() ), is that right?
here is the code in<EMAIL_ADDRESS>but the result just on the contrary

Sorry, read your code a bit too fast. You did have them backwards. If the type.indexOf() call passes then you are assumed to be receiving json, i must have saw a -1 when I read yours quickly for some reason. Sorry about that. Did upgrading to 1.0.3 fix your problem though?

@craigpaul oh, i got it. it means i must have 'Content-Type:application/json' in the response header, then vue-resource will do the transformation.
if it's could be possible that i white 'dataType: json' in the request options,  then the server will know what i need and return a json object, just like the $.ajax ?

sorry for my poor English.

Yes, assuming your on 1.0 or greater, having that as your content type will make vue-resource parse your response as JSON as you showed above.
As for dataType in jQuery, it doesn't actually do anything when sending the request, it is used to explicitly tell jQuery how you want the response parsed. It is essentially a trigger to run JSON.parse() on the response (or a different implementation in older browsers). So in short, no there is no dataType option in vue-resource, but that is because you don't need it. As long your server returns the proper Content-Type header, you'll be fine.

@craigpaul thanks a lot!


Feature Request: Instructions for zelda space saving with upgraded RAM

Could you provide the offsets if we want to use the zelda space saving mod with a 16MB and a 64MB chip as these are most common upgrades?
https://github.com/BrianPugh/game-and-watch-patch/blob/main/docs/zelda.md
Thanks

The offsets mentioned there point to an "island" of free storage (1802240 bytes) in the middle of the firmware by removing the Link's Awakening ROMs and the sleeping images. Because of this, it doesn't benefit other flash chip sizes. Another unfortunate thing is that there's an additional 797,552 bytes "island" of free storage at offset 0x325490, but we need contiguous regions (or need to modify retro-go's linker script to accept mutliple noncontiguous regions to place roms).
For the mario rom, I hand-relocated all the bits in the external storage to free up the space. The Zelda ROM is a bit more difficult, and honestly i've put less effort into it.
tl;dr, there's currently no space saving techniques for the zelda ROM that would add more free space for larger chips. So, for now, you're stuck with the zelda rom taking up the first 4MB of your ext flash.

Thanks for the explanation. That explains perfectly why I couldn't make sense of the sizes.


linqpad5

Microsoft Reviewers: Open in CodeFlow

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: izep sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Organized example experiments by task

This is literally just moving files around.  No other changes.

Just merging this.


SyntaxError: Cannot use import statement outside a module

I tried using the package and I keep getting back this error:
SyntaxError: Cannot use import statement outside a module
-- trace: /node_modules/nubian-dsa-connect/dist/index.js:12
import e from"axios";var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n

I tried adding "type": "module", to package.json and change to import DSA from 'nubian-dsa-connect' instead of require
that didn't solve it.
Any help please

Currently working on this issue. It should be resolved in the next update to the SDK.

This issue has been resolved in version 0.4.1


fix: focus outlines only on keyboard focus

Description
Some of our components (breadcrumb, card, dropzone, floatingactionbutton, tabs, textfield) were showing and persisting a keyboard focus indicator on mouse focus. This PR adjusts those components to show the correct focus indicators for keyboard and mouse.
How and where has this been tested?
Please tag yourself on the tests you've marked complete to confirm the tests have been run by someone other than the author.
Validation steps
Breadcrumb component

[x] Focus outline only shows on keyboard focus

In Storybook:

[x] Focus outline only shows on keyboard focus (manually tab through, compare to prod to see behavior before changes)

Card component

[x] Focus outline only shows on keyboard focus

In Storybook:

[x] Has a focused control
[x] Focus outline only shows on keyboard focus (manually tab through, compare to prod to see behavior before changes)

Docs site includes:

[x] Example of focus

Dropzone component

[x] Focus outline only shows on keyboard focus

In Storybook:

[x] Focus outline only shows on keyboard focus (manually tab through, compare to prod to see behavior before changes)

Floatingactionbutton component

[x] Focus outline only shows on keyboard focus

In Storybook:

[x] Focus outline only shows on keyboard focus (manually tab through, compare to prod to see behavior before changes)

Tabs component

[x] Focus outline only shows on keyboard focus

In Storybook:

[x] Focus outline only shows on keyboard focus (manually tab through, compare to prod to see behavior before changes)

Textfield component

[x] Focus outline only shows on keyboard focus

In Storybook:

[x] Has a focused control
[x] Has a keyboard focused control
[x] Focus outline only shows on keyboard focus (compare to prod to see behavior before changes)

Docs site includes:

[x] Example of focus
[x] Example of keyboard focus

Regression testing
Validate:

The documentation pages for at least two other components are still loading, including:

[ ] The pages render correctly, are accessible, and are responsive.

If components have been modified, VRTs have been run on this branch:

[ ] VRTs have been run and looked at.
[ ] Any VRT changes have been accepted (by reviewer and/or PR author), or there are no changes.

Screenshots

To-do list

[ ] I have read the contribution guidelines.
[ ] I have updated relevant storybook stories and templates.
[ ] I have tested these changes in Windows High Contrast mode.
[ ] If my change impacts other components, I have tested to make sure they don't break.
[ ] If my change impacts documentation, I have updated the documentation accordingly.
[ ] ✨ This pull request is ready to merge. ✨

The functionality is looking good to no longer show various focus indicators on click.
My biggest question is that we are adding the is-keyboardFocused class to some components that do not need that additional requirement. For example, on tabs, the issue is resolved by removing the :focus selector, as focus-visible already does not trigger on click with a div that has a tabindex. This applies to all the components here except for Textfield, which needs that class because :focus-visible is triggered differently when the field allows keyboard input.
Is the only benefit that we can have examples that show the keyboard focused state? We have been trying to clean up a lot of the unnecessary pseudos and state classes, so this seems to be going in the other direction. But may be desired if we want it for examples and Storybook.

Thanks for your comments! I wasn't sure of the state of using is-keyboardFocused anymore. I actually brought this up on one of your PRs to see whether we can only rely on :focus-visible now since it has solid browser support. I don't have much context around why we've used it previously, but my assumption was that we were using it as a kind of polyfill for :focus-visible. Has the team decided one way or another on this?
I'm all for removing unneeded code. I was interested in having keyboard focus states shown in Storybook specifically with controls because that setup will give us Chromatic coverage for the focus and keyboard focus states to help future-proof. I'll look into how we can maintain that coverage without shipping unnecessary code.

The functionality is looking good to no longer show various focus indicators on click.
My biggest question is that we are adding the is-keyboardFocused class to some components that do not need that additional requirement. For example, on tabs, the issue is resolved by removing the :focus selector, as focus-visible already does not trigger on click with a div that has a tabindex. This applies to all the components here except for Textfield, which needs that class because :focus-visible is triggered differently when the field allows keyboard input.
Is the only benefit that we can have examples that show the keyboard focused state? We have been trying to clean up a lot of the unnecessary pseudos and state classes, so this seems to be going in the other direction. But may be desired if we want it for examples and Storybook.

Ah, yep. I went on a little "Chromatic Coverage!!!" rampage that didn't make sense in hindsight (we don't want coverage of is-keyboardFocused classes when the component shouldn't have that class 🤦♀). I've just pushed updates to remove those unneeded is-keyboardFocused classes, and to address your comments. Let me know if these changes address your concerns, and thanks for your comments!


how to refresh table dropdown item after loading the table data.

I would like to add new items in the dropdown after loading the table, I tried using setColumData, setdata but it's not refreshing the table dropdown.
kindly help me.

You have access to the options in the dropdown here:
table.options.columns[columnNumber].source
You can update the options anytime. For doing that automatically you can implement something described in the conditional example in this page:
https://bossanova.uk/jexcel/v4/examples/dropdown-and-autocomplete


TRG 7.02 License and copyright header out of date at some places

There are a couple of files, where year ranges should be adapted

thanks for the hint, I implemented the change, could you please check in main?


Quell M2Eclipse errors from use of error prone

M2Eclipse is unable to use errorprone and must continue to use the JDT compiler.

Codecov Report

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

@@           Coverage Diff           @@
##           master     #354   +/-   ##
=======================================
  Coverage   60.91%   60.91%
=======================================
  Files          64       64
  Lines        1658     1658
  Branches      250      250
=======================================
  Hits         1010     1010
  Misses        542      542
  Partials      106      106

Continue to review full report at Codecov.

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


Performance(csi) : commit database tables in single transaction

Description & motivation
CSi provides the ability to edit the document via the interactive database tables. However, it is quite expensive to modify the document using these tables. Therefore we want to batch the items instead of baking each one individually.

Changes:

Add CSiSharedResources project (similar to RevitSharedResources)
Add csi specific implementation of ISpeckleConverter (ICSiSpeckleConverter) which implements method 'CommitAllDatabaseTableChanges'
Call this method from the converter after the receive operation is finished

This change is not "kit friendly" as it requires anyone making a new converter to implement an interface that is defined in CSiSharedResources instead of Core which could be confusing, but it still can be done. IMO implementing DI in the connectors will mean that users can implement specific conversions instead of having to replace the entire converter, so I am not so sad about this PR being not kit friendly.

Screenshots:

Validation of changes:
Receiving large amounts of grids still works an is much faster

Checklist:

[x] My pull request follows the guidelines in the Contributing guide?
[x] My pull request does not duplicate any other open Pull Requests for the same update/change?
[x] My commits are related to the pull request and do not amend unrelated code or documentation.
[x] My code follows a similar style to existing code.
[ ] I have added appropriate tests.
[ ] I have updated or added relevant documentation.

@AlanRynne
Changes applied per our discussion today

I've added myself to the review and will take a look this AM. @connorivy you may want to merge dev back into this branch as GH is complaining of conflicts now

@AlanRynne I think we gave the all clear on this one didn't we?


Allow DatatableInput class to be extendable

Hi darrachequesne, I need the DatatableInput class to be extendable for custom filtering. Can the DatatableInput.class be non-final class?
Thanks in advance

Merged as https://github.com/darrachequesne/spring-data-mongodb-datatables/commit/5a2ecc5891ecdf74b1c3d1d36248b06c623336b6 and released as 1.0.1. Sorry for the delay!


((NFL+GAME))How to watch Cavaliers vs Lakers  live stream info game Time TV channel

🔴WATCH:NFL📺📱👉 NFLGAME LIVE
🔴WATCH:NFL📺📱👉 NFLGAME LIVE STREAM FREE
🔴WATCHE:NFL📺📱👉 NFLGAME LIVE TV
Hey NFL fans. I've been wanting to watch more Atlanta Falcons vs Dallas Cowboys lately, but most online links I've found either skip frequently or are lower quality. I don't mind paying for Atlanta Falcons vs Dallas Cowboys 2024 live full schedule and medal events, but they blackout local games (which is 2 teams for me) and all nationally televised games (Peacock TV, Fubo, Sling, TNT & ABC). I refuse to pay basically double or more just to get those channels and just for NFL games.
I have good Internet and a good PC if that matters. I just wanna watch Atlanta Falcons vs Dallas Cowboys stream games in good quality without paying over $250 a year. Any advice is appreciated.
What app/website are you using to watch the Atlanta Falcons vs Dallas Cowboys 2024 Streams live free? ... I'm not 100% it's basically a live stream of the Atlanta Falcons vs Dallas Cowboys 2024 live Games Streams.


Organizr Glass don't work since 1.6.0

Describe the bug
The URL https://theme-park.dev/css/base/organizr/organizr-base-old.css don't work since last update.
There's a 404 error
Theme Install Method (Don't skip) : custom CSS in Organizr
Application Info (Don't skip)

Version 1.6.0
Branch Default

Organizr glass is deprecated

https://github.com/GilbN/theme.park/blob/9fedde26fa2749e5c291cc647714eb5a86d3dd01/css/base/organizr/organizr-base-old.css you can paste this

Thank you @GilbN  but this link don't work like this if i paste it with this syntax :
@import "https://github.com/GilbN/theme.park/blob/9fedde26fa2749e5c291cc647714eb5a86d3dd01/css/base/organizr/organizr-base-old.css";
This Organizr Glass is really an amazing theme, many thanks for your hard work !

Link won't work. Just the content

Sorry, i'm not very good.
I don't know how use it in CSS custom with Organizr.

Just copy paste the content

Unfortunately it doesn't work neither

Copy from the raw link

Glad it's working, thanks for your patience

Links https://theme-park.dev/css/base/organizr/organizr-base-old.css and https://theme-park.dev/CSS/themes/organizr/organizr-base-old.css still offline yet

Haven't merged develop yet. Use https://develop.theme-park.dev/css/addons/organizr/glass/organizr-base-old.css.css

Hello,
Since this morning the glass base doesn't seem to work.
I use both https://develop.theme-park.dev/css/addons/organizr/glass/organizr-base-old.css and https://theme-park.dev/css/addons/organizr/glass/glass-base.css.
I know the full version has been deprecated, but have you did a modification ? Or the issue is on my own config ?
Thanks a lot.

Hello,
Since this morning the glass base doesn't seem to work. I use both https://develop.theme-park.dev/css/addons/organizr/glass/organizr-base-old.css and https://theme-park.dev/css/addons/organizr/glass/glass-base.css. I know the full version has been deprecated, but have you did a modification ? Or the issue is on my own config ? Thanks a lot.

Adding
@import "https://theme-park.dev/css/addons/organizr/glass/organizr-base-old.css";
@import "https://theme-park.dev/css/addons/organizr/glass/glass-base.css";
:root {
    --main-bg-color: url(https://theme-park.dev/css/addons/organizr/glass/example.jpg) center center/cover no-repeat fixed;
    --mobile-bg-color: radial-gradient(circle, #3a3a3a, #2d2d2d, #202020, #141414, #000000) center center/cover no-repeat fixed;

    --link-color: #fff;
    --custom-buttons-color: radial-gradient(ellipse at center, #3F51B5 0%, #009688 100%) center center/cover no-repeat fixed;
    --hompage-item-hover: radial-gradient(ellipse at center, rgba(0, 150, 136, 0.33) 0%, #b53f3f73 100%) center center/cover no-repeat fixed;
    --notification-box-line: #000;

    --div-background-color-10: rgba(0, 0, 0, 0.15);
    --div-background-color-15: rgba(0, 0, 0, 0.25);
    --div-background-color-25: rgba(0, 0, 0, 0.35);
    --div-background-color-35: rgba(0, 0, 0, 0.45);
}

looks to be working here

Thanks for your quick reply as usual :)
It works on another brower like Edge, but not on FF
BTW thelayout.css.backdrop-filter.enabled and gfx.webrender.all still on true

I think it's a FF's trick, they changed something


There should be a latest stable tag on docker hub

I asked about this on gitter: [ ]

Expected Behavior
latest docker tag should not point to a beta version, or there should be a latest-stable tag as well.
Current Behavior
latest == vx.x.x-beta.x
Possible Solution
latest == vx.x.x
OR
latest == vx.x.x-beta.x AND latest-stable == vx.x.x
Context
We're running some docker images based on latest, and that's causing some issues likely related to beta functionality.  We're seeing different behaviors on Windows and Linux, for example.
Your Environment

Version used: latest
Version of Truffle/Remix/Other tools used:
NodeJS Version: [ ] 6.x, [ ] 7.x (unsupported), [ ] 8.x, [ ] 9.x
Operating System and version (include distro if Linux): Windows
Commit hash to use with above link for reproduction:
I intend to submit a pull request to fix this issue: [ ]

Not sure if this is a fix that I can PR: docker image tag would need an update for this suggestion to be implemented.

This may be an issue with our CI/CD setup. @davidmurdoch is looking into it. We didn't mean to point latest to beta releases

Looks like this has been addressed, seeing a beta and next tag on Dockerhub.  Closing here.


chore(Bicategory/Functor): split into two files

Made a folder Bicategory/Functor and split the file Bicategory/Functor.lean into Bicategory/Functor/Oplax and Bicategory/Functor/Pseudofunctor. This should make it easier to add more code about functors for bicategories.

Thanks!
bors merge


Added NATGatewayFailed Error code

Added this error message ( found in the install log)  to a list of known errors in OCM, so it doesn't pop up with "OCM3999 - Unknown error" code and save Primary On-Call time debugging.
Full Install Log: https://docs.google.com/document/d/1PilYlo8wyB0kAiInyIaDnb8964Y0IIf2LXgXpacaegg/edit?usp=sharing
Related Slack Thread : https://coreos.slack.com/archives/CCX9DB894/p1643661195222699
Related Jira Card: https://issues.redhat.com/browse/OSD-9846

/cc @gregsheremeta for a look once updated.

Looks like you still need to gofmt the test file.

/lgtm

/lgtm
you're awesome, @lnguyen1401 !


Doc clarification: When does Setup Gradle step not apply to subsequent executions?

Docs say:

Most of the functionality of the gradle-build-action is applied via Gradle init-scripts, and so will apply to all subsequent Gradle executions on the runner, no matter how Gradle is invoked.

Emphasis on "most" is mine - when does this not apply?
I was about to switch to that method (a setup step, then using run action from then on) but wasn't sure if there might be a gotcha there to be aware of.

Yes, I can see how that could be confusing. In reality, all of the features apply regardless of how Gradle is invoked (via the gradle-build-action or via a run action).
So there's no practical difference between the 2 patterns, but we recommend specifying a gradle-build-action step to setup Gradle and then a simple run step to execute Gradle. This makes the use of the gradle-build-action less intrusive on your workflow.
I'll update the docs for clarity. Thanks for reporting.

I guess the "most" in that sentence applied to the use of init-scripts. Some functions (like setting the default version of Gradle) work by configuring environment variables that apply to all Steps in the Job.

Thank you!


added about and faq pages to storybook

By creating this pull request you agree to the terms in CONTRIBUTING.md.
https://github.com/Infineon/.github/blob/master/CONTRIBUTING.md
--- DO NOT DELETE ANYTHING ABOVE THIS LINE ---
Added an About and FAQ pages to Storybook.

📦 Published PR as canary version: 18.2.12--canary.221.079f97c918a1450d0ca7bd18aaec1fe9f17bf62f.0

:sparkles: Test out this PR locally via:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

FAQ should not be listed under the components on storybook. I moved it into the stories folder and removed its own story => not needed. Great work for already creating content using the accordion though. But we only need to reference the faq from the faq page, not from the components section.


import oracledb broken the electron app on get NODE_MODULE_VERSION error

Found an issue or bug? Tell me all about!
when npm install oracledb from https://github.com/oracle/node-oracledb ,install is ok , can connect oracle db in a separated single npm script file , no error there, but use oracle db in electron-vue app ,get NODE_MODULE_VERSION error as below :
Describe the issue / bug.
Uncaught Error: The module '/Users/langge/dev/test/h5js/webtest/electron-vue/app/node_modules/oracledb/build/Release/oracledb.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 53. Please try re-compiling or re-installing
the module (for instance, using npm rebuild ornpm install).
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
at Object.Module._extensions..node (module.js:598:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at Object. (/Users/langge/dev/test/h5js/webtest/electron-vue/app/node_modules/oracledb/lib/oracledb.js:35:19)
at Object. (/Users/langge/dev/test/h5js/webtest/electron-vue/app/node_modules/oracledb/lib/oracledb.js:405:3)
How can I reproduce this problem?
see the code :
<template>

<button v-on:click="dbClick">Query Oracle</button>{{dbtext}}

</template>

If visual, provide a screenshot.
#
Tell me about your development environment.

Node version:v7.7.4
NPM version:4.1.2
vue-cli version: (if necessary)2.8.1
Operating System:macOS

If you are looking to suggest an enhancement or feature, then feel free to remove everything above.

I have resolved this problem 。Uninstall node 7.7.4 , install node 8.0 nightly-build ,can run .
beacuse node 7.7.4 = NODE_MODULE_VERSION 51 ; node 8.0 = NODE_MODULE_VERSION 53
install node 8.0 ,reinstall oracledb and rebuild it in app , run ok .

This may be a case where the native node module (those written in C, and not purely JS) has to be built against the electron runtime to function properly. This process isn't always simple, but things are usually better when using electron-builder since the build step will ensure things are built properly. Glad you got this sorted out.


Pressing Tab on the message console, goes to the next field

Right now if you press the Tab button it goes to the next field. It would be a good improvement if pressing Tab indents the line.
BTW I have injected a custom script provided here using TemperMonkey to add this feature, it works fine.
Also, Thanks for making the tool.

Hi @shivamgly
The new update (v2.1.1) captures tab button press and inserts a \t character.
It naturally prevents default functionality of the tab button (i.e. jumping to the next element) only when focus is on the message input. We can use Ctrl + Alt + Shift + Tab to compensate for that.


How to calculate the test accuracy?

Hello! I want to ask how to calculate the test accuracy?

EER( equal error rate) is used as metric in speaker recognition according to their paper, In defence of metric learning for speaker recognition . The code is defined as tuneThresholdfromScore() in tuneThreshold.py.


deactivate medication - validates Program Medication FK

Changes Unknown when pulling 57bfad5b28d388bcbd25799531625ed00d05a004 on deactivation into ** on master**.


Update core/Cargo.toml to fix chrono version to 0.4.33

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

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

Totals

Change from base Build<PHONE_NUMBER>2:
0.0%

Covered Lines:
55472

Relevant Lines:
56390

💛  - Coveralls


[FEATURE REQUEST]: limit max number of notifications being shown at the same time

Thanks again for this plugin!
It would be cool if there is a setting, which allows you to set the limit for the number of notifications being shown at the same time. If real number of currently present notifications exceeds this limit, then the last (the nearest to the bottom of window) notification should say something like "3 more...". When one of the present notifications is timed out and vanished, then the first from these "3 more..." is shown and etc... Or if you have any alternative ideas -  it's up for discussion! ;)

You can limit the number of notifications with custom stages like so
  local stages = require("notify.stages").fade_in_slide_out

  require("notify").setup({
    stages = vim.list_extend({
      function(state)
        if #state.open_windows >= 3 then
          return nil
        end
        return stages[1](state)
      end,
    }, vim.list_slice(stages, 2, #stages)),
  })

then the last (the nearest to the bottom of window) notification should say something like "3 more...".

I don't think this would be worth doing, editing a notification window depending on the state of the windows would be complex and introduce coupling of currently quite separate parts of the code.
Instead nvim-notify could expose the number of notifications pending which could be used in a statusline or something


Fixed #26288 -- Added support for relative imports in django.conf.urls.include().

For example, within myproject.urls::
urlpatterns = (
    url(r'', include('.myapp.urls')),
)

.. becomes equivalent to::
urlpatterns = (
    url(r'', include('myproject.myapp.urls')),
)

Whilst a contrived example, this can make heavy-nested apps look far, far
cleaner. For example, within myproject.foo.foo_bar.foo_bar_baz.urls,
one only needs to include .foo_bar_baz_qux.urls to get to the "next"
level, rather than the significantly more unwieldy
myproject.foo.foo_bar.foo_bar_baz.foo.bar_baz_qux.urls.
https://code.djangoproject.com/ticket/26288
Signed-off-by: Chris Lamb<EMAIL_ADDRESS>

I guess I'll close this PR and the ticket since no one else has expressed interest in the feature.


fix module dependency

This is needed for https://github.com/k8ssandra/k8ssandra/issues/229.

This is needed for https://github.com/k8ssandra/k8ssandra/issues/229.


Always showing an update

Hi,
I've updated to 1.4.4 and it shows that 1.4.4 (it says I have v1.4.4) is available to update... Can you fix this?
Thanks

Same issue here, originally reported it to Josef but he said to report here: https://github.com/JosefNemec/Playnite/issues/2369

https://playnite.link/forum/thread-514-post-4369.html#pid4369

Here with the good plugin id : https://playnite.link/forum/thread-275-post-5012.html#pid5012

hi, i have the same issue as well.

resolved

@Lacro59 this isn't solved. The update notification is still there


Add NVIDIA GPU exporter

You need to add the DCO.
Thanks for sharing, I have some suggestions to improve your exporter:
You are using direct instrumentation, you should be using MustNewConstMetric instead.
memory_total_bytes should be memory_bytes, total is generally to be avoided in metric names as most metrics are totals.
duty_cycle and fanspeed_percent should be exposed as ratio rather than a percentage, and power_usage_milliwatts would be better in watts.

Thanks for the review.
I added the "Signed-off-by" line in the commit message.
Regarding naming and units, I was trying to keep them similar to how they are represented in nvidia-smi and cAdvisor etc.

Thanks!


⚠ Bofrost.at has degraded performance

In b17c987, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1334 ms

Resolved: Bofrost.at performance has improved in 403ffdc.


Initial tls-sni support and new api for domain authorizations

replaces #2565
This makes it possible to build better support for certs and automated renewal on top of these.
TODO

[x] API docs
[x] moar specs

@SpComb I think all review comments are tackled. PTAL

Added handling of missing LE registration in API and on CLI. If CLI sees LE reg missing error from domain_auth api, it will automatically run through registration command:

Docs for this now in https://github.com/kontena/docs/pull/14

API docs still need to be updated, but I'll fix those when we've agreed on everything else. don't wanna do it multiple times... :)

Waiting for status/merge unless we still want to fix the model relations to not be mongo BSON ID strings.


Add Interaction Calculus

Language name
Interaction Calculus
URL of example repository
https://github.com/VictorTaelin/Interaction-Calculus/blob/master/example.ic
URL of syntax highlighting grammar
https://github.com/VictorTaelin/Interaction-Calculus?tab=readme-ov-file#language
Most popular extensions
.ic
Detected language

This appears to be a hobby language with very few users on GitHub. Closing.
Ref: https://github.com/github-linguist/linguist/issues/6994#issuecomment-2287888666


Bulk exclude

What's this PR do?
Script to bulk exclude any fids for node 362 (campaign runs 5439 or 2341) that are pending and whose reportback has a quantity of less than 200. This is a fix for #6353 .
How should this be manually tested?
When ssh'd in your vagrant environment, run drush updb -y in dosomething@dev:/var/www/dev.dosomething.org/html$
Check http://dev.dosomething.org:8888/us/node/362/rb/ and only fids with a quantity over 200 should still be pending and appear in the inbox.
Any background context you want to provide?
Is an update to #6353 .
What are the relevant tickets?
Fixes #6344

:+1:


Random connection errors

Version: node_redis versions 2.2.5 and 2.6.0-0. Redis version 2.8.12
Platform: Node.js 0.12
Description:

I recently encountered the same error reported in #1024. Initially we were running node_redis version 2.2.5.
We started seeing these occasional errors:
error: message="Redis error", error="Error: subscriptions are active but got an invalid reply: OK"
  at RedisClient.return_reply (/app/node_modules/redis/index.js:638:32)
  at /app/node_modules/redis/index.js:309:18

After seeing your recent fixes for pubsub, we upgraded node_redis to 2.6.0-0. The error didn't go away but instead it looked like the one mentioned in #1024:
error: message="Redis error", error="Error: Redis connection lost and commands aborted in uncertain state. They might have been processed."
at RedisClient.connection_gone (/app/node_modules/redis/index.js:576:17)
at Socket.<anonymous> (/app/node_modules/redis/index.js:245:14)
at Socket.g (events.js:199:16)
at Socket.emit (events.js:129:20)
at _stream_readable.js:908:16

According to the stack trace, it appears that the connection is being cut by the db itself but we see nothing to indicate that is the case. It's also unclear what commands "might have been processed" and if we should consider this a warning instead of an error.
Sadly, I don't have a repro for this problem. We see it in our logs every 5 to 30 minutes but don't know the cause. However, I'd be happy to try and validate that a fix causes the errors to stop.
It might be helpful to know what messages aren't being processed since our get, set, and publish calls all use callbacks for error handling and we haven't seen them fail.
And if the failures are in subscribe (which doesn't use a (error, result) style callback) and node-redis automatically reconnects and re-subscribes, should this be an error?
Any help in understanding the nature of this problem and what's causing these errors is greatly appreciated.
Thanks!

@ryanwe the first error indicates an error in node_redis. Do you have some code that triggered this at least partly reproducible? Even though I guess it is already fixed by the recent pub sub fixes as you did not run into it anymore (please run your code with v.2.6.0-1 though, as there were some further fixes concerning reconnecting in pub sub mode).
The second error really indicates network issues as you already mentioned. With the error you should at least also see the command name of the fired command, if you look at the original error properties. That way it should be easier to see what command might have been processed (and yes, this can and will be improved further at some point by adding the arguments and also a better stack trace out of production mode).

Do you maybe use the azure Redis cache? I remember connection losses with that network in another issue. You might want to check further on how the stream works, when it is connected or looses a connection and what errors it receives (by using the retry_strategy or listening to the reconnecting event you also receive the error that resulted in the network loss).

Thanks for the quick reply @BridgeAR!
We're running in Heroku against a managed addon (RedisCloud) provided by RedisLabs. I'm working with them to investigate any network issues but they haven't found anything on their end yet.
In the meantime, I'll upgrade us to 2.6.0-1, and add a listener to reconnecting to try and get more information about the error. I'll update this issue when I know more.

RedisLabs moved us to a new node which includes some software updates on their end and the errors have gone away. I'm going to deploy the changes mentioned in my previous comment and will continue to monitor things, but it looks like this was a connection/networking issue with RedisCloud.
Thanks again for your help!

This sounds good. As a further hint: If the server side drops the connection and node_redis is able to reconnect properly there is likely not going to be any error / message besides the warning that the connection is lost and node_redis is reconnecting.


Add tests

Run some tests via cmake --build . --target test

Done although the tests just check that programs do not crash.
I close it for now but a lot of work must be done to have decent tests.


Error Building the LAB, downloaded Pre-built packer boxes

Operating System Version: Windows 10.0.17134.0
Provider (VirtualBox/VMWare): Virtual Box
Vagrant Version: Vagrant 2.1.5
Packer Version:
Is the issue reproducible or intermittent? reproducible

Description of the issue:
I downloaded Pre-built packer boxes.
Getting below error when performing step 6 of Building DetectionLab from Scratch
b\Vagrant> vagrant up
Bringing machine 'logger' up with 'virtualbox' provider... disk space
Bringing machine 'dc' up with 'virtualbox' provider...
Bringing machine 'wef' up with 'virtualbox' provider...
Bringing machine 'win10' up with 'virtualbox' provider...
==> logger: Box 'bento/ubuntu-16.04' could not be found. Attempting to find and install...
logger: Box Provider: virtualbox
logger: Box Version: >= 0
==> logger: Loading metadata for box 'bento/ubuntu-16.04'
logger: URL: https://vagrantcloud.com/bento/ubuntu-16.04
==> logger: Adding box 'bento/ubuntu-16.04' (v201808.24.0) for provider: virtualbox
logger: Downloading: https://vagrantcloud.com/bento/boxes/ubuntu-16.04/versions/201808.24.0/providers/virtualbox.box
==> logger: Box download is resuming from prior download progress
logger:
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.
OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054

please close the issue, resolved after changing the network.


fix: GitHub auth plugin's name

#minor

Coverage increased (+0.01%) to 54.605% when pulling 899970a0d940d1cf13c4f15fff18b5471e2aabd1 on peterbozso:patch-7 into 1e2438f4215649b94f1469311478b66c591a720d on microsoft:main.

Coverage increased (+0.01%) to 54.605% when pulling 899970a0d940d1cf13c4f15fff18b5471e2aabd1 on peterbozso:patch-7 into 1e2438f4215649b94f1469311478b66c591a720d on microsoft:main.


identify_trial error

expyfun does display grayscale images. Now when I loop through an image list I get:
Traceback (most recent call last):
File "/Volumes/TimeMachineBackups/MEG_Data/expyfun_MEG_experiments/DevZ/DevZ.py", line 63, in
ec.identify_trial(ec_id='MFR', ttl_id=[0])
File "/Users/mreilly2/anaconda/lib/python2.7/site-packages/expyfun-2.0.0.dev0+b796f5f-py2.7.egg/expyfun/_experiment_controller.py", line 1715, in identify_trial
raise RuntimeError('Cannot identify a trial twice')
RuntimeError: Cannot identify a trial twice

The cycle is supposed to be identify_trial -> start_stimulus -> trial_ok, you are probably doing two identify_trial calls in a row which is not allowed (there should be a single one per trial)

That's it, thanks.
On Thu, Sep 14, 2017 at 2:07 PM, Eric Larson<EMAIL_ADDRESS>wrote:

The cycle is supposed to be identify_trial -> start_stimulus -> trial_ok,
you are probably doing two identify_trial calls in a row which is not
allowed (there should be a single one per trial)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/LABSN/expyfun/issues/335#issuecomment-329609286, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AKqnBzWfaRCj4zUasZquxpJKXMqRSUsgks5siZWXgaJpZM4PYLSR
.


Forty-Third Community Call

The next call will be on Tue, Jan 24th, at 10 am CET (8 am UTC), Asia and Europe-friendly time.
Agenda:

CosmWasm 1.2
Wasmd 0.31
Cosmos SDK 0.47 update
AwesomeWasm
Documentation
Open Q&A

Zoom link: https://us06web.zoom.us/j/81675399995?pwd=T2h5ZHhZOFBHakY0TWNjTFI1T3hqZz09

The recording is now available online: https://vimeo.com/792163812


Resume Training using saved checkpoints.

Hi again,
I want to know how can we used the saved checkpoints to reusme training?
I used the following code for this purpose, but it used to give me few warnings and I am not sure if it was loading the weights correctly:
```
   if opt.resume >= 0:
          model_param_file = glob.glob('%s/checkpoint_%s*.model' % (opt.path_to_chkpt_folder, opt.resume))

          net = torch.load(model_param_file[0])

opt.resume is the epoch number I want to resume training from..
Thanks!

Okay thanks for explaining it to me. Appreciate it!
I will get back to you if I will need more help.


removed call to setAccessible()

Can one of the admins verify this patch?

Too late, I have already pushed a patch


Generic Error Page

We should have a default error page that takes the user back to home if they try to access an invalid url or have a malformed request

404 Error page when incorrect offering ID


Change how long for each individual background possible?

Show background image 1 for like 2-3 seconds and automatcially change to a video background but this video will run for eternity until I navigate to other game. Is this possible?

I agree with this!!

I agree with this!!


Split doc strings in 16380 characters string parts (maximum MSVC capa…

Allow to compile with msvc when string length is more than 16380 characters (MSVC limit)

@diorcety perfect! can youjust squash your commits?

done

Thanks!


Wrong value using nextValue ?

After using this lib for hours, i'm seeing some divergence in the values calculated using nextValue.
let bbands = indicators.BollingerBands(candlestick.close, 120, 2, symbol, close)

let bbResult = []

const BollingerBands = function (C, period, stdDev, symbol, next) {
    if (!bbResult[symbol]) {
        bbResult[symbol] = new bb({ values: C, period: period, stdDev: stdDev })

        let result = bbResult[symbol].getResult()

        return result[result.length - 1]
    } else return bbResult[symbol].nextValue(next)
}

Maybe i'm doing something wrong? For example
LTCBTC (Binance) - At: 2019-11-21T05:25:10-03:00
BB > Upper: 0.0068462318 Lower: 0.0067572348

Values from tradingview: Upper: 0.006700 Lower: 0.006660

XRPBTC (Binance) - At: 2019-11-21T05:44:05-03:00
BB > Upper: 0.000030946226 Lower: 0.000030701274

Values from tradingview: Upper: 0.00003074 Lower: 0.00003064

Do you mean to say using getResult and nextValues have different results.
Take a look at the the test case here https://github.com/anandanand84/technicalindicators/blob/master/test/volatility/BollingerBands.js

Hey @anandanand84 thanks for the fast reply.
Yeah i know, i'm using getResult only when there's no value inside the array of that particular symbol.

how do you compare the values between tradingview and this, because all you are getting is the last value of the get result in here. It may have multiple values based on the size of C and period. So you may be comparing the wrong values.
For example you are comparing fifth value of your result with first value of tradingview, because you are ignoring the first four values of the result.

how do you compare the values between tradingview and this, because all you are getting is the last value of the get result in here.

I'm using only the last value and comparing based on time, for example at 2019-11-21T05:25:10-03:00 i get this from the lib:
Upper: 0.0068462318 Lower: 0.0067572348
on tradingview the value for the same moment is:
Upper: 0.006700 Lower: 0.006660
But i think i found the error, im not saving the 'nextValue' back in the array.
Changed my method to this:
const BollingerBands = function (C, period, stdDev, symbol, next) {
    if (!bbResult[symbol]) {
        bbResult[symbol] = new bb({ values: C, period: period, stdDev: stdDev })

        let result = bbResult[symbol].getResult()

        return result[result.length - 1]
    } else {
        bbResult[symbol] = bbResult[symbol].nextValue(next)

        console.log(bbResult[symbol])

        return bbResult[symbol]
    }
}

I'll see if its correct after some time.
Thanks :)

Probably my error, as described above.
Thanks @anandanand84


Suggestion

Allow applying skins from inventory during the match

Do you mean that you're not able to change the equipment during a competitive match?

Do you mean that you're not able to change the equipment during a competitive match?

yes

since client thinks that skins added from inventory changer are real, client won't let you to change skins


Host lookup fails when using wins nss plugin.

Issue description
I'm having an issue looking up a host using getent on the wins service.
Steps to reproduce
I installed samba using this configuration section :
    services.samba = {
      enable = true;
      nsswins = true;
      enableNmbd = true;
    };

Lookup using nmblookup works fine (part of the samba package). Below I'm looking up host "Sirius" :
[pieter@officepib-nixos:/nix/store]$ nmblookup Sirius
<IP_ADDRESS> Sirius<00>
<IP_ADDRESS> Sirius<00>

Wins is correctly configured :
[pieter@officepib-nixos:/nix/store]$ cat /etc/nsswitch.conf
passwd:    files mymachines systemd
group:     files mymachines systemd
shadow:    files

hosts:     files mymachines wins dns myhostname
networks:  files

ethers:    files
services:  files
protocols: files
rpc:       files

Looking up using getent returns nothing :
[pieter@officepib-nixos:/nix/store]$ getent -s wins hosts Sirius

Ping returns a system error :
[pieter@officepib-nixos:/nix/store]$ ping Sirius
ping: Sirius: System error

I'm not an expert, but when I run strace, I see that getent does not search for libnss_wins.so.2 in the correct location (the samba package).  I'm not sure if I'm on to something here?
[pieter@officepib-nixos:/nix/store]$ strace getent -s wins hosts Sirius
execve("/run/current-system/sw/bin/getent", ["getent", "-s", "wins", "hosts", "Sirius"], 0x7fff099a2970 /* 69 vars */) = 0
brk(NULL)                               = 0x886000
access("/etc/ld-nix.so.preload", R_OK)  = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib/tls/x86_64/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib/tls/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib/tls/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/run/opengl-driver/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib/x86_64/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/run/opengl-driver-32/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib/tls/x86_64/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib/tls/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib/tls/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/run/opengl-driver-32/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib/x86_64/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/run/opengl-driver-32/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls/x86_64/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/tls", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/x86_64/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/x86_64", 0x7ffdcfcb93c0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\34\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=2011232, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3ca5677000
mmap(NULL, 3881376, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3ca50a1000
mprotect(0x7f3ca524b000, 2097152, PROT_NONE) = 0
mmap(0x7f3ca544b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1aa000) = 0x7f3ca544b000
mmap(0x7f3ca5451000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3ca5451000
close(3)                                = 0
arch_prctl(ARCH_SET_FS, 0x7f3ca5678540) = 0
mprotect(0x7f3ca544b000, 16384, PROT_READ) = 0
mprotect(0x605000, 4096, PROT_READ)     = 0
mprotect(0x7f3ca5679000, 4096, PROT_READ) = 0
brk(NULL)                               = 0x886000
brk(0x8a7000)                           = 0x8a7000
openat(AT_FDCWD, "/run/current-system/sw/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=126969360, ...}) = 0
mmap(NULL, 126969360, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f3c9d78a000
close(3)                                = 0
stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=96, ...}) = 0
openat(AT_FDCWD, "/etc/host.conf", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=8, ...}) = 0
read(3, "multi on", 4096)               = 8
read(3, "", 4096)                       = 0
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=96, ...}) = 0
read(3, "# Generated by resolvconf\nnamese"..., 4096) = 96
read(3, "", 4096)                       = 0
close(3)                                = 0
uname({sysname="Linux", nodename="officepib-nixos", ...}) = 0
openat(AT_FDCWD, "/run/opengl-driver/lib/tls/libnss_wins.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver/lib/libnss_wins.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/tls/libnss_wins.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/opengl-driver-32/lib/libnss_wins.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib/libnss_wins.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=96, ...}) = 0
exit_group(2)                           = ?
+++ exited with 2 +++

Technical details
these paths will be fetched (0.06 MiB download, 0.31 MiB unpacked):
  /nix/store/bcrwa5b8z54xrl95ipfrq6nqhb0530yi-stdenv-linux
  /nix/store/svqz53x33gsjh41h357azm8fk755ynma-bash-interactive-4.4-p23-dev
copying path '/nix/store/svqz53x33gsjh41h357azm8fk755ynma-bash-interactive-4.4-p23-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/bcrwa5b8z54xrl95ipfrq6nqhb0530yi-stdenv-linux' from 'https://cache.nixos.org'...
 - system: `"x86_64-linux"`
 - host os: `Linux 4.14.54, NixOS, 18.09pre145679.dae9cf6106d (Jellyfish)`
 - multi-user?: `yes`
 - sandbox: `no`
 - version: `nix-env (Nix) 2.0.4`
 - channels(pieter): `"nixos-unstable-18.09pre138687.1b1be29bf82"`
 - channels(root): `"nixos"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

@xastor normally, glibc should pipe all nss lookups to nscd, which gets configured to use the nss modules configured in system.nssModules. Is nscd running on your system?

@flokli I have the same issue. The problem (as you can see from the strace) is that glibc doesn't even try to access the nscd socket.

Workaround (but ugly):
environment.etc."ld-nix.so.preload".text = ''
  ${pkgs.samba4Full}/lib/libnss_winbind.so.2
'';

cc @arianvp @Mic92 @FRidh

Can you provide a quick reproducer / vm test so I can debug this locally for testing?

An empty test vm should be enough. As in
# go to a nixpkgs checkout, in my case at 939fcdcbddf5713552a9a4ed61389f13f4a88188
unset NIX_PATH  # this part is important
nix-build nixos --arg configuration '{ users.users.root.password = "asdf"; }' -A vm
./result/bin/run-nixos-vm

Log in as root with password asdf. Observe nscd.service is running, e.g. with systemctl.
Run getent passwd. Observe no Dynamic User. There really should be one, as nscd itself is running as one. Run something like strace -f -s 5000 getent passwd. See that no attempt to open a connection to nscd is made and getent tries and fails to load libnss_systemd.so.2.

That probably also explains why UIDs/GIDs of files owned by dynamic users are not resolvable:
# ls -la
total 0
drwx------  3 root  root   19 Mar 22 06:11 .
drwxr-xr-x 16 root  root  223 Mar 30 14:58 ..
drwxr-xr-x  2 64237 64237  47 Apr  9 19:04 dhcpd

(I use a modified dhcpd with DynamicUser)

Dynamic user lookup seems to work here:
systemd-run --pty --property=Type=oneshot --property=DynamicUser=yes id
Running as unit: run-u6172.service
Press ^] three times within 1s to disconnect TTY.
uid=64124(run-u6172) gid=64124(run-u6172) groups=64124(run-u6172)

I can also look up the user with getent passwd $uid while the command is running - as an example, take a look at the owner of /proc/$(pidof nscd) - it's nscd, even though getent passwd doesn't show that user. That's probably expected and fine - thinking of non-local users, you probably can't get a listing of all users via that as well.
So I think it's safe to say custom NSS modules should work (as nss-systemd is such a module) - so I'd need a reproducer of the winbind issue to investigate hee.

Umm, that's weird. On my unstable machine, the same does not work:
systemd-run --pty --property=Type=oneshot --property=DynamicUser=yes id
[sudo] password for janne:
Running as unit: run-u54.service
Press ^] three times within 1s to disconnect TTY.
uid=62338 gid=62338 groups=62338

Neither does it work on my 19.09 machine.

That's probably expected and fine - thinking of non-local users, you probably can't get a listing of all users via that as well.

Nope. If getent finds the required library, it can list the users. Try this:
LD_LIBRARY_PATH=$(nix-build --no-out-link '<nixpkgs>' -A systemd)/lib getent passwd
# note that the empty test vm is missing any channels, you you either need to find that path some other way or run nix-channel --update

Which sort of isn't the point anyways. getent and therefore the relevant glibc calls, like getaddrinfo seem to not try to contact nscd, at all. Just run strace. It never attempts to open a socket connection to nscd.

vs.

The same example works for samba/lib in the LD_LIBRARY_PATH or LD_PRELOAD. You can absolutely list users, host and so on that way.

We can't really populate nss modules to a mutable store path, and add this to LD_LIBRARY_PATH. This would bite us every time we try run a binary linked against another glibc version (similar to how we have this problem with OpenGL drivers), as explained in https://github.com/NixOS/nixpkgs/issues/55276.
https://github.com/NixOS/nixpkgs/issues/55276#issuecomment-460722492 says nscd is the way to provide these in a ABI-neutral way, and on NixOS, we do that by enabling nscd, setting LD_LIBRARY_PATH for nscd.service, and rely on "common userland" to go via nscd.
Having the uid lookup via ps -fp $(pgrep nscd) still makes me think it should work for "common userland". Could it be getent is somewhat special here, not using nscd on purpose (as it's a glibc low-level util)?
On the other hand, the initial report says "ping" for wins is broken, so /that/ would be an example of a broken "common userland" application. @xastor, if you could get me an strace output of the ping command, and a systemctl cat nscd.service to see how LD_LIBRARY_PATH looks there (and what's in these folders), I could guess.
If I'd get a reproducer VM config, I could even debug it by myself ;-)

So to give you some background: @ajs124 and I disable nscd by default because we don't think we need it on all systems.
I enabled the service on the Samba DC so winbindd works. Today, I rebooted the server and suddenly, it works. Is it possible that for some reason toggling nscd requires a reboot (ie a restart of all processes)?

Processes might cache the fact that nscd is not available, I'm not sure.
I'd strongly recommend having nscd enabled, as even in a minimal configuration, you'll miss the systemd-provided nss modules.

Ok, so doing some more testing, it seems like getent, for some reason, behaves differently from other things, like ls. Which is just great…

Related PRs:

https://github.com/NixOS/nixpkgs/pull/85998
https://github.com/NixOS/nixpkgs/pull/86010

So when enabling nscd (and maybe rebooting/starting various services), wins nss lookups work?

I can confirm that the systemd module works in htop and ps.
I can also confirm the winbind module (also Samba) with getent passwd $REALM\\Administrator
I'm not using wins, but I guess it'll also work.

If you need any more information that doesn't need to go into this issue, feel free to contact me via Matrix at @janne.hess:helsinki-systems.de or via IRC as das_j ;)

okay, let's close this issue, as it seems to be fixed. Thanks @ajs124 and @dasJ for debugging!