AsyncFunction and GeneratorFunction issues

I think, tests should pass:
const type = require('type-detect');
const assert = require('assert');

const asyncFn = async () => {};
const generatorFn = function* generator () {};

function getTag(obj) {
  return Object.prototype.toString.call(obj).slice(8, -1);
}

assert(type(asyncFn) === getTag(asyncFn));
assert(type(generatorFn) === getTag(generatorFn));

Is it a bug? If not, you should add it to README.

Hey @doasync thanks for the issue
This, again, is because of the early typeof optimisation; async () = >{} and function *() {} are all typeof x === "function", and so we return that early:
https://github.com/chaijs/type-detect/blob/c7895e499ecc0a93c567adef9fa2b33eec13d2ab/index.js#L54-L57
We could probably change that to:
  var typeofObj = typeof obj;
  if (typeofObj !== 'object' && typeofObj !== 'function') {
    return typeofObj;
  }

We'd welcome a PR, which includes that change plus you'll need to change the tests for generatorfunction, which are here:
https://github.com/chaijs/type-detect/blob/c7895e499ecc0a93c567adef9fa2b33eec13d2ab/test/new-ecmascript-types.js#L129-L135
Also, on top of that, this lib does not have tests for async functions as they weren't around when the lib was written - so you'll need to add tests for that.

Related issues: https://github.com/chaijs/chai/issues/958 and https://github.com/chaijs/chai/issues/949.
I don't think there are enough good use cases for differentiating async/generator functions from regular ones: any function can return promise or iterator. If we change this, we will break pretty common x.should.be.a("function") and y.should.respondTo('foo') usages.
If you really wish to detect async/generator functions, you can use @@toStringTag:
;(function* () {})[Symbol.toStringTag].should.equal("GeneratorFunction")
;(async function() {})[Symbol.toStringTag].should.equal("AsyncFunction")

If we change this, we will break pretty common x.should.be.a("function") and y.should.respondTo("foo") usages.

We could easily add a bit of extra code to chai to prevent breaking changes for the .a assertion; along the lines of:
isFunction = expectedType === 'function' && typeof thing === 'function'
if (isFunction) {
  assert(true)
} else {
  assert(type(thing) === expected)
}

respondTo shouldn't be called with async/generator functions anyway; it is meant for classes and their constructors. Although we'd probably still want to ensure this was a non-breaking change.
Granted, this adds more complexity in chai; but I am somewhat compelled by the following points:

@doasync is right, functions aren't primitives
We're mostly using typeof as a performance optimisation, and leaning much more heavily on toStringTag semantics. This would follow suit
Differentiation of these types could be helpful in testing
The point of this lib is to avoid code like ;(function* () {})[Symbol.toStringTag]; (perhaps a controversial statement:) developers should not need to know the intimate mechanics of JS to test their code

At any rate, there's more discussion needed here. I'll remove the pr wanted tag and let's get other @chaijs/type-detect members to weigh in.

I don't think there's a clear right or wrong answer here. I lean slightly toward the idea that it's reasonable for type-detect to distinguish between different types of functions.

I would argue that type-detects role is really a fancy polyfill for @@toStringTag. Almost all of the code that isn't returning just [Symbol.toStringTag] is for performance or for conformance - arguably that includes the typeof check at the beginning. Framed this way, it seems to make a lot more sense for type-detect to distinguish between different types of functions.


How to convert the gif data?

Hi
Thank you for your repo, and there is a gif and I don't  how to convert it to
lv_obj_t * img = lv_gif_create_from_data(parent, gif_data);
gif_data?
Is there any tools?
I want to slice my gif to 10 frames/second then show the img in the power on at first, but now I want to use your method.

Hi,
I've updated the README the describe it.
See https://github.com/lvgl/lv_lib_gif/commit/230b6d60f854d118ce6af230424afed7d5353599

Thank you!!!!
I convert my video to gif then display it!


Possibly incorrect ds_expiration persisted to $_SESSION by JWTService?

In JWTService, $_SESSION['ds_expiration'] is set like this:
$_SESSION['ds_expiration'] = time() + (self::$access_token->getExpiresIn() * 1000); # expiration time.

PHP's time() returns the current unix epoch in seconds:
>>> time()
=><PHONE_NUMBER>
>>> time()
=><PHONE_NUMBER>

OAuthToken's getExpiresIn() property appears to be in seconds too:
>>> $token = $auth->generateToken();
=> DocuSign\eSign\Client\Auth\OAuthToken {#5236}
>>> $token->getExpiresIn();
=> "3600"

The DocuSign documentation specifies that expires_in is in seconds:

Name
Description

expires_in
The number of seconds before the  access token expires. When your access token expires, your application  should generate a new JWT with your credentials and request a new access  token.

If the "3600" value was treated as seconds, it would be 60 minutes and the correct code may be $_SESSION['ds_expiration'] = time() + self::$access_token->getExpiresIn(). The current code enacts an expiration time of 60 * 1000 minutes = about 41 days

@AlbinoDrought, thank you for notifying us regarding this issue. For your reference I created case DEVDOCS-4201

Fixed. Closing the case

Fixed. Closing the case


[NETBEANS-2038] Do not dump ambiguous output when a build is cancelled.

@jlahoda Thanks for the review. You are right it is better to be safe than sorry. I've applied the requested changes.


Colab error when using my own CKPT Link

rm: cannot remove '/content/convert_original_stable_diffusion_to_diffusers.py': No such file or directory
Conversion error, Insufficient RAM or corrupt CKPT, use a 4.7GB CKPT instead of 7GB

After successfully download the model, it got:
rm: cannot remove '/content/convert_original_stable_diffusion_to_diffusers.py': No such file or directory
Conversion error, Insufficient RAM or corrupt CKPT, use a 4.7GB CKPT instead of 7GB
Conversion error, Insufficient RAM or corrupt CKPT, use a 4.7GB CKPT instead of 7GB
KeyboardInterrupt                         Traceback (most recent call last)
 in
161           while not os.path.exists('/content/stable-diffusion-v1-5/unet/diffusion_pytorch_model.bin'):
162             print('Conversion error, Insufficient RAM or corrupt CKPT, use a 4.7GB CKPT instead of 7GB')
--> 163             time.sleep(5)
164       else:
165         while os.path.getsize('/content/model.ckpt') <<PHONE_NUMBER>:
KeyboardInterrupt:

if you're using a V2 model, it won't convert.

It is strange, I remenber it could run last week.
Do you have some suggesion?

what model are you using ?

final-pruned.ckpt (4GB, from novelai)
I want to test dreambooth on anime characters based on this  model
Thanks~

https://drive.google.com/file/d/17VEEZxzDzWmaVMZgiJDWeZhTr2Pl5lMa/view?usp=share_link
The model link

check the compatibility box

Downloading...
From: https://drive.google.com/uc?id=17VEEZxzDzWmaVMZgiJDWeZhTr2Pl5lMa
To: /content/model.ckpt
100% 4.27G/4.27G [00:20<00:00, 204MB/s]
rm: cannot remove '/content/convert_original_stable_diffusion_to_diffusers.py': No such file or directory
Conversion error, Insufficient RAM or corrupt CKPT, use a 4GB CKPT instead of 7GB
Conversion error, Insufficient RAM or corrupt CKPT, use a 4GB CKPT instead of 7GB
Conversion error, Insufficient RAM or corrupt CKPT, use a 4GB CKPT instead of 7GB
Conversion error, Insufficient RAM or corrupt CKPT, use a 4GB CKPT instead of 7GB
Conversion error, Insufficient RAM or corrupt CKPT, use a 4GB CKPT instead of 7GB
I just tried again, but it didn't work. As I remember it could run last week, I guess this may becasue of some update?

is there a diffusers version of the model somewhere ?

is there a diffusers version of the model somewhere ?

May be I can't find it. But this ckpt can still work in my local stable diffusion and your dreambooth colab until last week.

same issue here. I didn't change model, the colab itself just stops working because of this error, so it couldn't be something wrong with model.

same issue here. I didn't change model, the colab itself just stops working because of this error, so it couldn't be something wrong with model.

If you didn't change the model, you can try to check the "compatibility" box.

same issue here. I didn't change model, the colab itself just stops working because of this error, so it couldn't be something wrong with model.

If you didn't change the model, you can try to check the "compatibility" box.

I already did, the error still happens.


[BUG] "Uninstall package, then update it" failed because reinstallation too early ("install technology is different")

Please confirm these before moving forward

[X] I have searched for my issue and not found a work-in-progress/duplicate/resolved issue.
[X] I have tested that this issue has not been fixed in the latest (beta or stable) release.
[X] I have checked the FAQ section for solutions
[X] This issue is about a bug (if it is not, please use the correct template)

Describe your issue
Attempted to update "Firefox Developer Edition [Mozilla.Firefox.DeveloperEdition]" which resulted in "A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.".
A logical choice was to use Uninstall package, then update it on the package, but this also failed with the same error.
The issue appears to be that the Firefox uninstaller UI which I had confirmed did not fully complete before WingetUI decided "Have permission to install, starting installation threads". Therefore Firefox was still on the system at that moment.
The only option in this event is to search for Firefox Dev ed. via Discover Packages as it disappeared from the Software Updates list after uninstallation. In short, if Uninstall package, then update it fails, it would've been faster to just perform the steps manually: uninstall, search, install again.
Operation history
 Operation: installation - Perform date 2024-01-17 18:04:49.506964
 Package: <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.InstalledPackageItem object at 0x0000016BB8D02180>>
 Command-line call: "winget.exe install --id Mozilla.Firefox.DeveloperEdition --exact --accept-source-agreements --architecture x64 --disable-interactivity --accept-package-agreements" Output code: -1978335189
 Console output:
   | Found an existing package already installed. Trying to upgrade the installed package...
   | A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.
   |

--------------------------------
 Operation: installation - Perform date 2024-01-17 18:04:19.589022
 Package: <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.InstalledPackageItem object at 0x0000016BB8D02180>>
 Command-line call: "winget.exe uninstall --id Mozilla.Firefox.DeveloperEdition --exact --accept-source-agreements --disable-interactivity" Output code: 0
 Console output:
   | Found Firefox Developer Edition [Mozilla.Firefox.DeveloperEdition]
   | Starting package uninstall...
   | Successfully uninstalled
   |

--------------------------------
 Operation: update - Perform date 2024-01-17 17:51:12.930073
 Package: <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.UpgradablePackageItem object at 0x0000016BB33CBC80>>
 Command-line call: "winget.exe upgrade --id Mozilla.Firefox.DeveloperEdition --exact --include-unknown --accept-source-agreements --disable-interactivity --accept-package-agreements" Output code: -1978335189
 Console output:
   | A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.
   |

Steps to reproduce the issue
No response
WingetUI Log
...
🟢 Waiting for install permission... title=Firefox Developer Edition (x64 en-US), id=Mozilla.Firefox.DeveloperEdition, installId=1705506672.6098683
🔵 Given package: <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.UpgradablePackageItem object at 0x0000016BB33CBC80>>
🔵 Installation options: <InstallationOptions: SkipHashCheck=False;InteractiveInstallation=False;RunAsAdministrator=False;Version=;Architecture=;InstallationScope=;CustomParameters=[];RemoveDataOnUninstall=False>
🔵 Found icon:  https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Firefox_Developer_Edition_logo%2C_2019.svg/800px-Firefox_Developer_Edition_logo%2C_2019.svg.png
🔵 Current program set to<PHONE_NUMBER>.6098683
🟢 Have permission to install, starting installation threads...
🔵 Starting <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.UpgradablePackageItem object at 0x0000016BB33CBC80>> update with Command ['winget.exe', 'upgrade', '--id', 'Mozilla.Firefox.DeveloperEdition', '--exact', '--include-unknown', '--accept-source-agreements', '--disable-interactivity', '--accept-package-agreements']
🔵 Starting Winget search for installed packages
🔵 Starting Scoop search for installed packages
🔵 Starting Chocolatey search for installed packages
🔵 Starting Pip search for installed packages
🔵 Starting Npm search for installed packages
🔵 Starting .NET Tool search for installed packages
🔵 Starting PowerShell search for installed packages
🟢 Searching for string ""
🟢 .NET Tool search for installed packages finished with 0 result(s)
🟠 Chocolatey got too few installed packages, retrying
🔵 Starting .NET Tool search for installed packages
🟢 .NET Tool search for installed packages finished with 0 result(s)
🟢 Searching for string ""
🟢 Chocolatey search for installed packages finished with 0 result(s)
🟠 Chocolatey got too few installed packages, retrying
🔵 Starting Chocolatey search for installed packages
🟢 Pip search for installed packages finished with 107 result(s)
🟢 PowerShell search for installed packages finished with 1 result(s)
🟢 Searching for string ""
🟢 Searching for string ""
🟢 Chocolatey search for installed packages finished with 0 result(s)
🟢 Searching for string ""
🟢 Scoop search for installed packages finished with 230 result(s)
🟢 Searching for string ""
🟢 Npm search for installed packages finished with 4 result(s)
🟢 Searching for string ""
🟢 Winget search for installed packages finished with 394 result(s)
🟢 Searching for string ""
🟢 Searching for string ""
🟢 Total packages: 736
OverflowError
['A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.', '']
🟢 Searching for string "f"
🟢 Searching for string "fi"
🟢 Searching for string "fir"
🟢 Searching for string "fire"
🟢 Searching for string "firef"
🟢 Searching for string "firefo"
🟢 Searching for string "firefo"
🟢 Waiting for install permission... title=Firefox Developer Edition (x64 en-US), id=Mozilla.Firefox.DeveloperEdition, installId=1705507459.2873514
🔵 Given package: <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.InstalledPackageItem object at 0x0000016BB8D02180>>
🔵 Installation options: <InstallationOptions: SkipHashCheck=False;InteractiveInstallation=False;RunAsAdministrator=False;Version=;Architecture=;InstallationScope=;CustomParameters=[];RemoveDataOnUninstall=False>
🔵 Found cached image in C:\Users\user\AppData/Local/WingetUI/CachedIcons\firefox-developeredition.icon.png
🟢 Waiting for install permission... title=Firefox Developer Edition (x64 en-US), id=Mozilla.Firefox.DeveloperEdition, installId=1705507459.3299084
🔵 Given package: <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.InstalledPackageItem object at 0x0000016BB8D02180>>
🔵 Installation options: <InstallationOptions: SkipHashCheck=False;InteractiveInstallation=False;RunAsAdministrator=False;Version=;Architecture=;InstallationScope=;CustomParameters=[];RemoveDataOnUninstall=False>
🔵 Found cached image in C:\Users\user\AppData/Local/WingetUI/CachedIcons\firefox-developeredition.icon.png
🔵 Current program set to<PHONE_NUMBER>.2873514
🟢 Have permission to install, starting installation threads...
🟠 Forcing 64bit architecture for package Mozilla.Firefox.DeveloperEdition, Firefox Developer Edition (x64 en-US)
🔵 Starting <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.InstalledPackageItem object at 0x0000016BB8D02180>> uninstall with Command ['winget.exe', 'uninstall', '--id', 'Mozilla.Firefox.DeveloperEdition', '--exact', '--accept-source-agreements', '--disable-interactivity']
🔵 Sending cancel signal...
['Found Firefox Developer Edition [Mozilla.Firefox.DeveloperEdition]', 'Starting package uninstall...', 'Successfully uninstalled', '']
🟡 Autohide disabled!
🔵 Current program set to<PHONE_NUMBER>.3299084
🟢 Have permission to install, starting installation threads...
🟠 Forcing 64bit architecture for package Mozilla.Firefox.DeveloperEdition, Firefox Developer Edition (x64 en-US)
🔵 Starting <Package: Firefox Developer Edition (x64 en-US);Mozilla.Firefox.DeveloperEdition;116.0;Winget: winget;<wingetui.PackageEngine.Managers.winget.WingetPackageManager object at 0x0000016B98E6CB90>;<wingetui.Interface.CustomWidgets.SpecificWidgets.InstalledPackageItem object at 0x0000016BB8D02180>> installation with Command ['winget.exe', 'install', '--id', 'Mozilla.Firefox.DeveloperEdition', '--exact', '--accept-source-agreements', '--architecture', 'x64', '--disable-interactivity', '--accept-package-agreements']
🔵 Reloading sources...
🔵 Reloading Winget sources...
🔵 Reloading Scoop sources...
OverflowError
['Found an existing package already installed. Trying to upgrade the installed package...', 'A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version.', '']
🔵 Reloading sources...
🔵 Reloading Winget sources...
🔵 Reloading sources...
...

Package Managers Logs
-

Relevant information
WingetUI 2.2.0
Screenshots and videos

This is an issue with how the firefox uninstaller works, since calling winget uninstall firefox shows the installer and then quits. This is an issue only with the Mozilla Firefox Package, and ultimately with winget.
I faced this issue too when developing this feature, but it can't be fixed from wingetui itself.


4.7 csv metrics

4.7 Backport of #288

Do we need to backport this to 4.7? IIRC the upstream repository is still responsible for building the 4.6 and 4.7 release branches?

Oh whoops: I just saw your slack message so it sounds like you already know this :laughing:

Yes apologies totally slipped my mind that 4.7 is being built from the upstream repository. I've opened the backport PR here. Closing this one.


Need the ability to report messages and block/ignore a user

Impact:

In user details, add a "Ignore user" option & the ability to "Un-ignore" him
Add a shortcut to access user details by clicking on the avatar in the timeline (Auto-insert name happens by clicking on the name)
Add a "Report" option in the message edit menu. After success it will propose to ignore the user.

Proposed wording:

in User details

for "ignore" ==> "Hide the user's messages" (too long?)
for "un-ignore" ==> "Show the user's messages"

In the message edit menu for "report" ==> "Report to moderator" (too long?)
(btw redact should be updated to remove: it will be on web too)
in the description popup ==> "Reason for reporting this content"
in the confirmation pop-up ==> "Are you sure you want to report this content to moderators?"
after success of report, in the "block" popup ==> "The content was successfully reported. Do you wish to hide all messages from this user?"

@ara4n Please can you confirm you're happy with this?

Matthew, I'm not sure the confirmation pop-up  "Are you sure you want to report this content to moderators?" is useful. What do you think about?
On another side, we plan to add a confirmation pop-up "Are you sure you want to hide all messages from this user?" when the user press Ignore option in member details screen.

From Matthew:

i suggest just "report content" for the context menu
after success of report: suggest just: "Do you want to hide all messages from this user?"
in User details: "Hide all messages from this user"


Print log if graph optimizer is enabled

Description
Brief description of what this PR is about

If this change is a backward incompatible change, why must this change be made?
Interesting edge cases to note here

Codecov Report
Patch coverage: 72.16% and project coverage change: +1.80 :tada:

Comparison is base (bb5073f) 72.08% compared to head (bc77433) 73.89%.

:exclamation: Current head bc77433 differs from pull request most recent head 8b72223. Consider uploading reports for the commit 8b72223 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #2501      +/-   ##
============================================
+ Coverage     72.08%   73.89%   +1.80%
- Complexity     5126     6910    +1784
============================================
  Files           473      680     +207
  Lines         21970    30086    +8116
  Branches       2351     3108     +757
============================================
+ Hits          15838    22233    +6395
- Misses         4925     6342    +1417
- Partials       1207     1511     +304

Impacted Files
Coverage Δ

api/src/main/java/ai/djl/modality/cv/Image.java
69.23% <ø> (-4.11%)
:arrow_down:

...rc/main/java/ai/djl/modality/cv/MultiBoxPrior.java
76.00% <ø> (ø)

...rc/main/java/ai/djl/modality/cv/output/Joints.java
71.42% <ø> (ø)

.../main/java/ai/djl/modality/cv/output/Landmark.java
100.00% <ø> (ø)

...main/java/ai/djl/modality/cv/output/Rectangle.java
72.41% <0.00%> (ø)

...i/djl/modality/cv/translator/BigGANTranslator.java
21.42% <0.00%> (-5.24%)
:arrow_down:

.../modality/cv/translator/ImageFeatureExtractor.java
0.00% <0.00%> (ø)

.../ai/djl/modality/cv/translator/YoloTranslator.java
27.77% <0.00%> (+18.95%)
:arrow_up:

...ain/java/ai/djl/modality/cv/util/NDImageUtils.java
67.10% <0.00%> (+7.89%)
:arrow_up:

api/src/main/java/ai/djl/modality/nlp/Decoder.java
63.63% <ø> (ø)

... and 228 more

... and 348 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


put full stacks in the trade window

When I drag a stack of anything into the trade window, I do not wish to be asked how many - the answer is almost always "all of them". Please make this default behaviour: skip the question of how many and just put the whole stack in there.
Perhaps make it so holding down Shift represses this, giving the standard and expected behaviour of offering to split the stack. Never mind if that's too much hassle though - if I want to put in less, I can split it beforehand, NP.
The same is true for dropping items on the floor, although that fix might be primarily beneficial for botters, so maybe you don't want to do that one.
Maybe someone who lives in Kamadan has a stronger opinion about this, but I suspect there are no TB users who would dislike this feature. If I'm correct, there's no need to include an option to turn it off.

sounds like a good idea, however a few notes:

I don't know how to actually do this. I don't think we have on-item-transfer hooks yet, so it requires some low level work
Changing the default behavior of a sensitive action like trading or dropping is bad because some user may feel like I am trying to scam them (they are used to trade 1 and might end up trading many without noticing), so this will have to be an optional feature, defaulted off.

What about, if trade window is open, ctrl click adds item to trade window instead of to storage?


DOC: <Issue related to /v0.2/docs/how_to/extraction_examples/>

URL
https://python.langchain.com/v0.2/docs/how_to/extraction_examples/
Checklist

[X] I added a very descriptive title to this issue.
[X] I included a link to the documentation page I am referring to (if applicable).

Issue with current documentation:
Getting following error:
Traceback (most recent call last):
File "Z:\llm_images\extract_info.py", line 148, in
response = chain.invoke(
^^^^^^^^^^^^^
File "Z:\conda_env\ccs\Lib\site-packages\langchain_core\runnables\base.py", line 2504, in invoke
input = step.invoke(input, config)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "Z:\conda_env\ccs\Lib\site-packages\langchain_core\output_parsers\base.py", line 169, in invoke
return self._call_with_config(
^^^^^^^^^^^^^^^^^^^^^^^
File "Z:\conda_env\ccs\Lib\site-packages\langchain_core\runnables\base.py", line 1598, in _call_with_config
context.run(
File "Z:\conda_env\ccs\Lib\site-packages\langchain_core\runnables\config.py", line 380, in call_func_with_variable_args
return func(input, **kwargs)  # type: ignore[call-arg]
^^^^^^^^^^^^^^^^^^^^^
File "Z:\conda_env\ccs\Lib\site-packages\langchain_core\output_parsers\base.py", line 170, in
lambda inner_input: self.parse_result(
^^^^^^^^^^^^^^^^^^
File "Z:\conda_env\ccs\Lib\site-packages\langchain_core\output_parsers\openai_tools.py", line 196, in parse_result
pydantic_objects.append(name_dictres["type"])
~~~~~~~~~^^^^^^^^^^^^^
KeyError: 'Person'
Idea or request for content:
No response

I can't reproduce your issue following the doc. please give a complete script to reproduce your issue

from typing import List, Optional
import uuid
from typing import Dict, List, TypedDict
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import (
AIMessage,
BaseMessage,
HumanMessage,
SystemMessage,
ToolMessage,
)
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI
from decouple import config
import warnings
warnings.filterwarnings("ignore")
OPENAI_API_KEY = config("OPENAI_API_KEY")
GPT_MODEL = config("GPT_MODEL")
Define a custom prompt to provide instructions and any additional context.
1) You can add examples into the prompt template to improve extraction quality
2) Introduce additional parameters to take context into account (e.g., include metadata
about the document from which the text was extracted.)
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are an expert extraction algorithm. "
"Only extract relevant information from the text. "
"If you do not know the value of an attribute asked "
"to extract, return null for the attribute's value.",
),
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
MessagesPlaceholder("examples"),  # <-- EXAMPLES!
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
("human", "{text}"),
]
)
class Person(BaseModel):
"""Information about a person."""
# ^ Doc-string for the entity Person.
# This doc-string is sent to the LLM as the description of the schema Person,
# and it can help to improve extraction results.

# Note that:
# 1. Each field is an `optional` -- this allows the model to decline to extract it!
# 2. Each field has a `description` -- this description is used by the LLM.
# Having a good description can help improve extraction results.
name: Optional[str] = Field(..., description="The name of the person")
hair_color: Optional[str] = Field(
    ..., description="The color of the person's hair if known"
)
height_in_meters: Optional[str] = Field(..., description="Height in METERs")

class Data(BaseModel):
"""Extracted data about people."""
# Creates a model so that we can extract multiple entities.
people: List[Person]

class Example(TypedDict):
"""A representation of an example consisting of text input and expected tool calls.
For extraction, the tool calls are represented as instances of pydantic model.
"""

input: str  # This is the example text
tool_calls: List[BaseModel]  # Instances of pydantic model that should be extracted

def tool_example_to_messages(example: Example) -> List[BaseMessage]:
"""Convert an example into a list of messages that can be fed into an LLM.
This code is an adapter that converts our example to a list of messages
that can be fed into a chat model.

The list of messages per example corresponds to:

1) HumanMessage: contains the content from which content should be extracted.
2) AIMessage: contains the extracted information from the model
3) ToolMessage: contains confirmation to the model that the model requested a tool correctly.

The ToolMessage is required because some of the chat models are hyper-optimized for agents
rather than for an extraction use case.
"""
messages: List[BaseMessage] = [HumanMessage(content=example["input"])]
tool_calls = []
for tool_call in example["tool_calls"]:
    tool_calls.append(
        {
            "id": str(uuid.uuid4()),
            "args": tool_call.dict(),
            # The name of the function right now corresponds
            # to the name of the pydantic model
            # This is implicit in the API right now,
            # and will be improved over time.
            "name": tool_call.__class__.__name__,
        },
    )
messages.append(AIMessage(content="", tool_calls=tool_calls))
tool_outputs = example.get("tool_outputs") or [
    "You have correctly called this tool."
] * len(tool_calls)
for output, tool_call in zip(tool_outputs, tool_calls):
    messages.append(ToolMessage(content=output, tool_call_id=tool_call["id"]))
return messages

examples = [
(
"The ocean is vast and blue. It's more than 20,000 feet deep. There are many fish in it.",
Person(name=None, height_in_meters=None, hair_color=None),
),
(
"Fiona traveled far from France to Spain.",
Person(name="Fiona", height_in_meters=None, hair_color=None),
),
]
messages = []
for text, tool_call in examples:
messages.extend(
tool_example_to_messages({"input": text, "tool_calls": [tool_call]})
)
llm = ChatOpenAI(model_name=GPT_MODEL, temperature=0, openai_api_key=OPENAI_API_KEY)
chain = prompt | llm.with_structured_output(
schema=Data,
method="function_calling",
include_raw=False,
)
response = chain.invoke(
{
"text": "My name is Harrison. My hair is black.",
"examples": messages,
}
)
print(f"{response}\n")
response = chain.invoke(
{
"text": "The solar system is large, but earth has only 1 moon.",
"examples": messages,
}
)
print(f"{response}\n")

could you please reformat your code using the "code block" functionality like a line of code ?

I have reformat the code. I am using following packages:
Python Version: 3.11.9
langchain Version: 0.2.5
langgraph Version: 0.1.1
langchain_core Version: 0.2.9
langchain_community Version: 0.2.5
langchain_openai Version: 0.1.9
openai Version: 1.35.3

my apology.  The problem is with "openai Version: 1.35.3"

you're right. whether the error is triggered or not in a particular run is related to the response that openai returned. my current investigation shows that it has something to do with what data schema openai thinks it can use. for example in the below, in the 1st run, it returns the json as an array of people and decides to use the "Data" schema, which results in correct output parsing; in the 2nd run, it returns the json as one single person and decide to use the "Person" schema which is not available (because we pass "schema=Data" to the llm)
json result [{'args': {'people': [{'name': 'Harrison', 'hair_color': 'black', 'height_in_meters': 'null'}]}, 'type': 'Data'}]
name_dict: {'Data': <class '__main__.Data'>}
people=[Person(name='Harrison', hair_color='black', height_in_meters='null')]

json result [{'args': {'name': None, 'hair_color': None, 'height_in_meters': None}, 'type': 'Person'}]
name_dict: {'Data': <class '__main__.Data'>}
Traceback (most recent call last):
...

see https://smith.langchain.com/public/800cd078-115c-495b-9280-fedbd2e83c4f/r
the LLM knows that it only has the tool "Data" , but since the example in our code gives example function call to "Person", it confuses the LLM and causes it to return function call to "Person" as well.
so maybe you can try fixing the examples to the below?
examples = [
    (
        "The ocean is vast and blue. It's more than 20,000 feet deep. There are many fish in it.",
        Data(people=[]),
    ),
    (
        "Fiona traveled far from France to Spain.",
        Data(people=[Person(name="Fiona", height_in_meters=None, hair_color=None)]),
    ),
]

Now it is working fine. Thank you very much.

@eyurtsev I think this issue can be closed.


support alternate download endpoint urls

This fix is meant to address #47

@ctaintor Any reason this was never merged. As I mentioned in #4 this would solve my problem of protecting my builds.

For what it counts, I have pulled this fork into my project and it works flawlessly. Thanks!!

@dlethin merge conflicts - maybe sync with upstream and refresh the PR ? 🙏

PR synced with upstream.

Any chance of this being merged? I would absolutely love this functionality due to my S3 bucket being hosted behind Cloudfront and not being publicly accessible.

I also need this feature as I've different public URLs for objects uploaded.

I also have a need for exactly this feature - Cloudfront seems to be the preferred way to share releases on S3 as it makes it a lot easier to add security features to control access to the assets. Our configuration means that the files are not actually accessible from the direct S3 URL at all.
I forked this branch and updated with the latest commits from the upstream master, to verify:
https://github.com/jonlay-hanno/fastlane-plugin-s3/tree/feature/optional-download-endpoint-update
Another confirmation on my end that the updated code works perfectly in my tests of a live app that we’re releasing.
@joshdholtz is there anything I can do to help get this merged? Happy to update the README with a better example, also, if that's blocking in any way.

I will take a look at this today! Just need to get a cup of ☕ in my first 😊

Hey @joshdholtz - you are probably super busy with much more important things than this PR - just checking in to see whether there's any likelihood of this being merged.
I'll go down the hacky route if not, but would love to see this "natively" in fastlane_s3 if possible 😄

Let me get some coffee in me and then I’ll take a look at this PR!

🙌 Always appreciated. Thanks for all the time you put into this stuff.


Сan`t find package v3

Try install goridge
go get -u github.com/spiral/goridge/v3
Result:
cannot find package "github.com/spiral/goridge/v3" in any of:         /usr/local/Cellar/go/1.15.7_1/libexec/src/github.com/spiral/goridge/v3 (from $GOROOT)         /Users/alex/go/src/github.com/spiral/goridge/v3 (from $GOPATH)

@alexpts I have updated the package in the go.pkg, should now work. On the old 1.15 and older versions of the GOlang, use GO111MODULE=on go get -u github.com/spiral/goridge/v3

Feel free to reopen the issue if the problem is still exists


Via SSH Tests continue despite failing to flash

Device
V540TND, V560TNE
RTE version
v0.9.1-rc1
OSFV version
fix-novacustom-v5xtnx-configs-powerctrl
Affected component(s) or functionality
Tests using dcu to change setup options
Brief summary
Executing flashrom fails after 30ms but tests think the flashing succeeded
How reproducible
every time
How to reproduce
run a test suite like WBS
scripts/run.sh dasharo-security/wifi-bluetooth-switch.robot
Expected behavior
The test succeeds - the options were changed
Actual behavior
the test fails because the fw was never flashed properly - the options could not have changed
Link to screenshots or logs

Full log: https://cloud.3mdeb.com/index.php/s/fa9YbZFqm8f7SQo
Additional context
No response
Solutions you've tried
No response

The core of this issue is also apparent when testing on Windows. Execute Command In Terminal exits early and does not return any output from the command.
sd-card-reader.robot_log.zip


Disable PySide2 app build on Arch since using Python 3.11 now

Arch started installing Python 3.11 so PySide2 can no longer be tested on it.
ex. https://github.com/beeware/briefcase/actions/runs/4877899896/jobs/8703110166
PR Checklist:

[ ] All new features have been tested
[x] All new features have been documented
[x] I have read the CONTRIBUTING.md file
[x] I will abide by the code of conduct

Comparing to a recent CI run, the only step for Arch that didn't run now is the PySide2 build.


[FEATURE] - Change Logging in Zeep Request/Response

Is your feature request related to a problem? Please describe.
SOAP requests and responses are not displayed correctly and should only be displayed when the level is DEBUG.
Describe the solution you'd like

Solution
Modify the Class MyLoggingPlugin
# This class lets you view the incoming and outgoing http headers and/or XML
class MyLoggingPlugin(Plugin):
    def egress(self, envelope, http_headers, operation, binding_options):
        # Format the request body as pretty printed XML
        xml = etree.tostring( envelope, pretty_print = True, encoding = 'unicode')
        print( f'\nRequest\n-------\nHeaders:\n{http_headers}\n\nBody:\n{xml}' )

    def ingress(self, envelope, http_headers, operation):
        # Format the response body as pretty printed XML
        xml = etree.tostring( envelope, pretty_print = True, encoding = 'unicode')
        print( f'\nResponse\n-------\nHeaders:\n{http_headers}\n\nBody:\n{xml}' )

and rewrite the code of soap client
    # Change to true to enable output of request/response headers and XML
    if logger.level > 10:
        DEBUG = False
    else:
        DEBUG = True

    try:
        csp_soap_client = Client(wsdl,
                                settings=settings,
                                transport=transport,
                                plugins=[MyLoggingPlugin(),history] if DEBUG else [ ],
                                )
        service = csp_soap_client.create_service("{http://www.cisco.com/AXLAPIService/}AXLAPIBinding", csp_location)
```


Add environments support for projects.agent.intents method group

For now it's impossible to list/get/delete/etc. intents in environments like 'dev'/'test'/'prod'.
These methods work only for draft versions.
It whould be nice if dialogflow api accepted
method calls like dialogflow.intents.list with environment specified like parent = 'projects/Project ID/agent/environments/Environment ID'
or something like that.
The only workaround for now is to create multiple agents/projects for dev/test/prod versions.

Hi, is it possible to call detectIntent with selected environment?

Unfortunately this code is purely generated, so this probably isn't the best place to make an API feature request. You can try opening a feature request at https://cloud.google.com/support/docs/issue-trackers, please feel free to link here if you do 🙃


Make sure graph edit background doesn't darken preview

This adds a "StyleBoxEmpty" override to the graph edit node. Previously the preview was slightly darkened due to the background.

I will close this. The Graph preview has other problems now, but this is way to outdated ;)


Blank Login Page on Startup

STEPS TO REPRODUCE:

Stop and remove all docker containers.
Clone a fresh repository.
Pull fresh images

docker pull quay.io/galexrt/zulip
docker pull quay.io/galexrt/zulip-postgresql-tsearchextras

Make the following changes to docker-compose.yml

s/example.com/mydomain.org/g
Switch the ports from 80:80 -> 8080:80, and 443:443 -> 8443:443, to expose zulip on different host ports.

Run docker-compose up -d (as root)
Go to main page, https://convox.org:8443
Login page doesn't work. (Nor does Register)

VERSION INFO:

Docker version 1.8.3, build f4bf5c7
docker-compose version: 1.5.0rc1
Host System(I can't imagine this is relevant): Linux leviathan 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux

LOGS:

I checked /var/log/zulip in the dockerzulip_zulip_1 container. Nothing in errors.log, and nothing suspicious in server.log. I can see my login requests, look normal:

2015-10-22 21:43:42,262 INFO     <IP_ADDRESS>    GET     301   1ms /login (unauth via ?)
2015-10-22 21:43:42,478 INFO     <IP_ADDRESS>    GET     200  47ms (db: 1ms/1q) /login/ (unauth via ?
Let me know if there's any particular log file that would be helpful.

Please try to register , show the result here

@decker502 Can you please check if the repo you have cloned is up to date?
The blank login page is occuring, because I changed the ZULIP_AUTH_BACKENDS_EmailBackend env var to ZULIP_AUTH_BACKENDS. Can you please reclone the repo and reconfigure your docker-compose.yml. It should fix the problem.

@decker502 This problem is related to my changes made to the ZULIP_AUTH_BACKENDS env var.

@Galexrt  sorry, I forget it. haha.

@Galexrt No, I don't think that's it, I tried switching it back and forth, and the login error occurs regardless. When I try to register I get a page like this:

@Galexrt Question: do I actually need to be running an outgoing mail server for Zulip to function(postfix or something) on the host machine? Currently I've left these settings as default:
ZULIP_SETTINGS_EMAIL_HOST: "smtp.convox.org"
ZULIP_SETTINGS_EMAIL_HOST_USER<EMAIL_ADDRESS>And I'm not actually running a mail server at all. I assumed I would still be able to log in and get basic functionality without it, but maybe that's not true?

@cmcneil You don't need a working smtp server for this to work.
That's why I created the ZULIP_USER_* vars. They create an user.
For the user creation to work you have to remove the /opt/docker/zulip/zulip/initiated and restart the container or remove the current zulip volume folder and restart the container. Please check if your docker-compose.yml is up to date with the correct env vars. Because the empty Login page means that you need to set the ZULIP_AUTH_BACKENDS to EmailAuthBackend like in the docker-compose.yml.
For example for you @cmcneil, you would set them up like this:
ZULIP_USER_FULLNAME="Carson Mcneil"
ZULIP_USER_DOMAIN="example.com"
<EMAIL_ADDRESS>ZULIP_USER_PASS="123456789"

See for more details about the ZULIP_USER_* vars: https://github.com/Galexrt/docker-zulip/wiki/Env-Vars#zulip-user-creation

The only thing you should be aware of is that you can currently only create "one" user using the script.
Maybe I'll add it in one of the updates, that you can create more than one user with the script, without the need of a mail server.

@cmcneil We fixed the problem in IRC. It's working now.

I successfully registered 2 users. I got the registration mail also.
If I click that link their profile page is opening.
after logout  I am unable to login again using browser . (There is no username password field)
For me login link is not working . if I click that link nothing is happing,  only  page will redirect to  "https://zulip.example.com/login"   No error message  also.
What is the issue ?


Disable submission button until complete

[ ] Scenario: Validate mandatory fields to allow to submit
If any of the fields on submission page ("Organization name (legal name)", "Completed by", "Title") are empty,
Then Submit button is disabled
Else Submit button is enabled

Is this not a duplicate of the second user story on #280

Yes it's a duplicate, good catch!


CLOUDSTACK-9127 Missing PV-bootloader-args for "SUSE Linux Enterprise…

… Server 10 SP2 and SP3"
ISSUE
STOP-START of SUSE Linux VMs fail, as PV-bootloader-args are missing during the start command.
DESCRIPTION
Repro steps

Upload Suse ISO
Create a VM with this ISO, and install it.
Detach ISO from the VM.
Reboot the VM, :>>>> This will work fine, as the pv-bootloader-args are not missing during reboot.
5.Stop the VM from CCP(VM will get destroyed in Xencenter)
Start the same VM from CCP , it will try to start but will fail.

Before Applying the fix
Before applying the starting the VM failed with following exception
com.cloud.utils.exception.CloudRuntimeException: Unable to start VM(i-2-6-VM) on host(7cfd6388-b763-4c09-b3a3-9679db2904a3) due to Task failed! Task record:                 uuid: 21a6799f-9523-7c0e-bb86-1de750a38d74
nameLabel: Async.VM.start_on
nameDescription:
allowedOperations: []
currentOperations: {}
created: Wed Dec 09 07:00:29 UTC 2015
finished: Wed Dec 09 07:00:31 UTC 2015
status: failure
residentOn: com.xensource.xenapi.Host@513d238c
progress: 1.0
type:
result:
errorInfo: [BOOTLOADER_FAILED, OpaqueRef:0b10b6ac-837d-29af-da9d-6ef1e11a064a, Unable to find partition containing kernel
]
otherConfig: {}
subtaskOf: com.xensource.xenapi.Task@aaf13f6f
subtasks: []

After Applying the fix
After applying the fix I am able to start the vm.

LGTM based on these tests:
nosetests --with-marvin --marvin-config=${marvinCfg} -s -a tags=advanced,required_hardware=true \
component/test_vpc_redundant.py \
component/test_routers_iptables_default_policy.py \
component/test_routers_network_ops.py \
component/test_vpc_router_nics.py \
smoke/test_loadbalance.py \
smoke/test_internal_lb.py \
smoke/test_ssvm.py \
smoke/test_network.py

Result:
Test iptables default INPUT/FORWARD policies on VPC router ... === TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
ok
Test redundant router internals ... === TestName: test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
ok
Test redundant router internals ... === TestName: test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
ok
Test redundant router internals ... === TestName: test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : SUCCESS ===
ok
Test redundant router internals ... === TestName: test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : SUCCESS ===
ok
Create a VPC with two networks with one VM in each network and test nics after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
ok
Create a VPC with two networks with one VM in each network and test default routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
ok
Check the password file in the Router VM ... === TestName: test_isolate_network_password_server | Status : SUCCESS ===
ok
Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === TestName: test_router_dhcphosts | Status : SUCCESS ===
ok
Test to create Load balancing rule with source NAT ... === TestName: test_01_create_lb_rule_src_nat | Status : SUCCESS ===
ok
Test to create Load balancing rule with non source NAT ... === TestName: test_02_create_lb_rule_non_nat | Status : SUCCESS ===
ok
Test for assign & removing load balancing rule ... === TestName: test_assign_and_removal_lb | Status : SUCCESS ===
ok
Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test02_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
ok
Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
ok
Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : SUCCESS ===
ok
Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : SUCCESS ===
ok
Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
ok
Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
ok
Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS ===
ok
Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS ===
ok
Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS ===
ok
Test destroy CPVM ... === TestName: test_10_destroy_cpvm | Status : SUCCESS ===
ok
Test Remote Access VPN in VPC ... === TestName: test_vpc_remote_access_vpn | Status : SUCCESS ===
ok
Test VPN in VPC ... === TestName: test_vpc_site2site_vpn | Status : SUCCESS ===
ok
Test for port forwarding on source NAT ... === TestName: test_01_port_fwd_on_src_nat | Status : SUCCESS ===
ok
Test for port forwarding on non source NAT ... === TestName: test_02_port_fwd_on_non_src_nat | Status : SUCCESS ===
ok
Test for reboot router ... === TestName: test_reboot_router | Status : SUCCESS ===
ok
Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_1_static_nat_rule | Status : SUCCESS ===
ok
Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_2_nat_rule | Status : SUCCESS ===
ok
Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Status : SUCCESS ===
ok

----------------------------------------------------------------------
Ran 33 tests in 18877.209s

OK

And:
nosetests --with-marvin --marvin-config=${marvinCfg} -s -a tags=advanced,required_hardware=false \
smoke/test_routers.py \
smoke/test_network_acl.py \
smoke/test_privategw_acl.py \
smoke/test_reset_vm_on_reboot.py \
smoke/test_vm_life_cycle.py \
smoke/test_vpc_vpn.py \
smoke/test_service_offerings.py \
component/test_vpc_offerings.py \
component/test_vpc_routers.py

Result:
Test router internal advanced zone ... === TestName: test_02_router_internal_adv | Status : SUCCESS ===
ok
Test restart network ... === TestName: test_03_restart_network_cleanup | Status : SUCCESS ===
ok
Test router basic setup ... === TestName: test_05_router_basic | Status : SUCCESS ===
ok
Test router advanced setup ... === TestName: test_06_router_advanced | Status : SUCCESS ===
ok
Test stop router ... === TestName: test_07_stop_router | Status : SUCCESS ===
ok
Test start router ... === TestName: test_08_start_router | Status : SUCCESS ===
ok
Test reboot router ... === TestName: test_09_reboot_router | Status : SUCCESS ===
ok
Test reset virtual machine on reboot ... === TestName: test_01_reset_vm_on_reboot | Status : SUCCESS ===
ok
Test advanced zone virtual router ... === TestName: test_advZoneVirtualRouter | Status : SUCCESS ===
ok
Test Deploy Virtual Machine ... === TestName: test_deploy_vm | Status : SUCCESS ===
ok
Test Multiple Deploy Virtual Machine ... === TestName: test_deploy_vm_multiple | Status : SUCCESS ===
ok
Test Stop Virtual Machine ... === TestName: test_01_stop_vm | Status : SUCCESS ===
ok
Test Start Virtual Machine ... === TestName: test_02_start_vm | Status : SUCCESS ===
ok
Test Reboot Virtual Machine ... === TestName: test_03_reboot_vm | Status : SUCCESS ===
ok
Test destroy Virtual Machine ... === TestName: test_06_destroy_vm | Status : SUCCESS ===
ok
Test recover Virtual Machine ... === TestName: test_07_restore_vm | Status : SUCCESS ===
ok
Test migrate VM ... === TestName: test_08_migrate_vm | Status : SUCCESS ===
ok
Test destroy(expunge) Virtual Machine ... === TestName: test_09_expunge_vm | Status : SUCCESS ===
ok
Test to create service offering ... === TestName: test_01_create_service_offering | Status : SUCCESS ===
ok
Test to update existing service offering ... === TestName: test_02_edit_service_offering | Status : SUCCESS ===
ok
Test to delete service offering ... === TestName: test_03_delete_service_offering | Status : SUCCESS ===
ok
Test for delete account ... === TestName: test_delete_account | Status : SUCCESS ===
ok
Test for Associate/Disassociate public IP address for admin account ... === TestName: test_public_ip_admin_account | Status : SUCCESS ===
ok
Test for Associate/Disassociate public IP address for user account ... === TestName: test_public_ip_user_account | Status : SUCCESS ===
ok
Test for release public IP address ... === TestName: test_releaseIP | Status : SUCCESS ===
ok
Test create VPC offering ... === TestName: test_01_create_vpc_offering | Status : SUCCESS ===
ok
Test VPC offering without load balancing service ... === TestName: test_03_vpc_off_without_lb | Status : SUCCESS ===
ok
Test VPC offering without static NAT service ... === TestName: test_04_vpc_off_without_static_nat | Status : SUCCESS ===
ok
Test VPC offering without port forwarding service ... === TestName: test_05_vpc_off_without_pf | Status : SUCCESS ===
ok
Test VPC offering with invalid services ... === TestName: test_06_vpc_off_invalid_services | Status : SUCCESS ===
ok
Test update VPC offering ... === TestName: test_07_update_vpc_off | Status : SUCCESS ===
ok
Test list VPC offering ... === TestName: test_08_list_vpc_off | Status : SUCCESS ===
ok
test_09_create_redundant_vpc_offering (integration.component.test_vpc_offerings.TestVPCOffering) ... === TestName: test_09_create_redundant_vpc_offering | Status : SUCCESS ===
ok
Test start/stop of router after addition of one guest network ... === TestName: test_01_start_stop_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test reboot of router after addition of one guest network ... === TestName: test_02_reboot_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test to change service offering of router after addition of one guest network ... === TestName: test_04_chg_srv_off_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test destroy of router after addition of one guest network ... === TestName: test_05_destroy_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test to stop and start router after creation of VPC ... === TestName: test_01_stop_start_router_after_creating_vpc | Status : SUCCESS ===
ok
Test to reboot the router after creating a VPC ... === TestName: test_02_reboot_router_after_creating_vpc | Status : SUCCESS ===
ok
Tests to change service offering of the Router after ... === TestName: test_04_change_service_offerring_vpc | Status : SUCCESS ===
ok
Test to destroy the router after creating a VPC ... === TestName: test_05_destroy_router_after_creating_vpc | Status : SUCCESS ===
ok

----------------------------------------------------------------------
Ran 41 tests in 8259.721s

OK

Haven't tested the actual feature yet. Seems a nice improvement for people using SUSE.

Thanks for testing and adding the screenshots, @SudharmaJain!
Waiting for you reply on the unit test question I asked.

Ping @wilderrodrigues

lgtm, doing a test build, now.

Go for it, @remibergsma! Changes LGTM :+1:
@DaanHoogland: should we wait for the outcome of your build?
Cheers,
Wilder

Nice find @DaanHoogland Can you please fix this @SudharmaJain ? Thanks!

Fixed the build.

thanks @SudharmaJain building again

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13:47 min
[INFO] Finished at: 2015-12-14T11:29:03+01:00
[INFO] Final Memory: 120M/736M
[INFO] ------------------------------------------------------------------------
✔ ~/cloudstack/cloudstack [try/1196|⚑ 18]

LGTM


BUG: unstacking with object columns defaults to None as a fill value

In [41]: df = DataFrame({'A' : [1,1,2], 'B' : list('aba'), 'C' : ['foo', np.nan, 'bar']}).set_index(['A','B'])

In [42]: df.unstack('B')
Out[42]:
     C
B    a     b
A
1  foo   NaN
2  bar  None

In [43]: df.unstack('B', fill_value=np.nan)
Out[43]:
     C
B    a    b
A
1  foo  NaN
2  bar  NaN

Introduced is this PR: https://github.com/pydata/pandas/pull/10246
you can make a case to do this as we DO support None as a fill value, but almost always even with object columns we use np.nan, unless very explicity set by the user.

cc @amcpherson

So the preferred functionality is?:
In [42]: df.unstack('B')
Out[42]:
     C
B    a     b
A
1  foo  NaN
2  bar  NaN

default to None for object columns seems reasonable to me, but I can fix if nan is preferred.

yeah we just use nan even for object columns
unless the user is very explicit about it

Hey folks, I'm happy to pick this up if no one else is working on it. I'm fairly confident with what needs to change (thanks for linking to the original PR, @jreback).

@mattayes please go ahead.


cog + gradio?

Not sure if you'd want to merge these changes exactly as-is so I didn't create a PR but things I was looking to do:

document cog steps for running and building using cog
add gradio web ui to the cog/docker image - I didn't even check to see how much size this adds to the image, if it's minimal then this is fine, but if it's a lot of size overhead, it might make sense to have a way to build an image without gradio and another with?

I'd be interested for any feedback/thoughts here, if there's any of this you'd be interested in merging, if you can give me some direction I'll get that cleaned up and a PR created

Hi, @jonstelly,  I think this will be helpful for those using Docker.
For https://github.com/VectorSpaceLab/OmniGen/compare/main...smahtz:OmniGen:cog#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R184-R188, these libraries have been added to cog.yaml. Are these lines no longer needed?


Do not pin versions on ng update

Versions
cli 6.0.0-rc.4

Repro steps
From an Angular 5 project:

update the CLI to v6 and migrate
ng update @angular/core --next

Observed behavior
Pinned versions in package.json:
"@angular/compiler": "6.0.0-rc.5",
"@angular/core": "6.0.0-rc.5",
"typescript": "2.7.2"
...

Desired behavior
Keep semantic versionning in package.json:
"@angular/compiler": "^6.0.0-rc.5",
"@angular/core": "^6.0.0-rc.5",
"typescript": "~2.7.2"
...

Mention any other details that might be useful (optional)
Pinned versions mean we can't do anymore minor/patch updates of the whole project simply with npm update and goes against semver.
It's not the role of the CLI to pin the versions. It's the role of the package manager, and as Angular 6 and CLI 6 require Node >= 8.9 and npm >= 5.5, it means the job is already done in a proper way by the package-lock.json.

I'm pretty sure this is a dupe as we've talked about it internally, but can't find the original issue so marking this as required.


different temperature sources for A/C

should be really useful integrating MQTT on the plugin.
for example, I've a MQTT sensor that gives temperature in json format, a thing like that:
{"Time":"2018-03-24T17:24:47","AM2301":{"Temperature":18.5,"Humidity":74.5},"TempUnit":"C"}
so, will be useful having a MQTT topic variable to be configured, a different data source as "temperatureFilePath" does with data on file.

At the moment I’m not looking to support anything extra here sorry. People should be able to create their own scripts that update the file.
Sent with GitHawk

https://github.com/Zzm317/homebridge-broadlink-rm#air-conditioner-pro
It will help you

thanks @phenix13, I'm using it. currently  I'm using "pseudoDeviceTemperature" field becouse I've no other way to indicate HomeKit the real temperature in the room, even if I've a sensor in it. that's why I suggested more temp sources to be included on the plugin (MQTT could be one of them). :)

@cubilon mqtt temperature support has been added in 3.5.3.

you someking of hero!

hm seems not working.
from logs:
[2018-3-27 19:26:42] [Broadlink RM] Mitsubishi onTemperature ({"Time":"2018-03-27T18:26:32","AM2301":{"Temperature":18.9,"Humidity":55.7},"TempUnit":"C"}0)

/usr/lib/node_modules/homebridge-broadlink-rm/node_modules/chai/lib/chai/core/assertions.js:1354
      throw new AssertionError(errorMessage, undefined, ssfi);
      ^
AssertionError: [CONFIG ERROR] maxTemperature (31) must be more than the reported temperature ({"Time":"2018-03-27T18:26:32","AM2301":{"Temperature":18.9,"Humidity":55.7},"TempUnit":"C"}0): expected '{"Time":"2018-03-27T18:26:32","AM2301":{"Temperature":18.9,"Humidity":55.7},"TempUnit":"C"}0' to be a number or a date

Hey @cubilon I've been unable to reproduce that issue, there may be logs (when "debug": true) is set that include the phrase onMQTTMessage. Can you send them if so please.

I've released v3.5.4 which will log some extra debug information.

v3.5.5 should fix the issue.

morning @lprhodes, now the error has changed:
[2018-3-28 07:50:12] [Broadlink RM] [DEBUG] Mitsubishi onMQTTMessage (raw value: {"Time":"2018-03-28T06:50:11","AM2301":{"Temperature":18.8,"Humidity":64.8},"TempUnit":"C"})
/usr/lib/node_modules/homebridge-broadlink-rm/accessories/aircon.js:602
    if (debug) log(`\x1b[33m[DEBUG]\x1b[0m ${name} onMQTTMessage (raw value 2: ${temperature.trim()})`);
                                                                                ^

TypeError: temperature.trim is not a function
    at AirConAccessory.onMQTTMessage (/usr/lib/node_modules/homebridge-broadlink-rm/accessories/aircon.js:602:94)
    at MqttClient.mqttClient.on (/usr/lib/node_modules/homebridge-broadlink-rm/node_modules/homebridge-platform-helper/accessory.js:343:12)
    at emitThree (events.js:136:13)
    at MqttClient.emit (events.js:217:7)

Turning debug to false should sort this for now
Sent with GitHawk

right, with debug off it's working fine

may I suggest one thing? do a "round" on temperature value. currently, if you send e.g. 18.9 to homekit, he return on screen "18". "19" may be more correct..


Switch from HoodieRecord to Flink Tuple2<Tuple2<BinaryStringData, BinaryStringData>, RowData>

This MR for illustration purpose.

Sorry, I wanted to open this MR in my fork to add some illustrations for my letter to community.


tcmu/file_optical: Add File Optical Support

Signed-off-by: Bryant G. Ly<EMAIL_ADDRESS>

@agrover Can you review please?

#80 is a bug against this, but I don't see why that should stop this being merged in the meantime.


Cursor jumps to end when editing

Go to login page and type "12345" now position the cursor after "2" and type "7", the cursor jumps after "5".
Related information

Windows 10
Master
.CoreCLR

/cc @et1975

It used to be the case, but it's it reproducible in the current code base? I've switched the input to use DefaulValue instead of Value and it should behave at this point.

Apologies for the late reply, switching to DefalutValue fixes this issue.


Worker Wrapper Type Regression

Also if you don't mind looking at the parameters that I'm using, if they are  proper or not.
My OG theming vs extract-colors theming

I think its too saturated

Hello @n-ce,
Thank you for your issue.
Type unknown
I've fix your first point in the last release v4.1.1: the worker return type.
Can you confirm it the last release is better please?
Color error
About your second point I've try with a downloaded image and the colors seems good:

The options are the same than theses: extract-colors.namide.com/demo.
You can try by uploading the image directly on the website.
Can you share your image please?
I will try with your image.

Actually the thing is a color by itself is pretty useless especially in image color extraction.
I have to pass it through a lightener or darkener for using in a light dark/theme.
Now, in my program I'm using Average Color Algorithm which works for 4/5 cases. This is why I needed extract-colors for better accuracy of colors.
But the problem is the lack of suitable color conversion. Maybe you can add that, it solves two problems

Finding a suitable color in the colorArray
Creating a color scheme out of the suitable color

For some time now I've been thinking about adding a feature to extract-colors:
I'd like a final step that classifies colors by “type” so as to be able to exploit them more easily.
I thought, for example, that extract-colors could return values such as these:

main color
secondary color
main background color
secondary background color
most vivid color
dullest color
most used color
…

But this implies returning empty values if no colors are found, because not all image types would match these results.
Moreover I don't yet know which color types would be relevant for the majority of cases.
In short, I don't know which options would be the most relevant and I'm still thinking about it before adding this feature.
But about creating a color scheme different from the original image, I hadn't thought of that. I wonder if this is beyond the scope of a color extractor.

But this implies returning empty values if no colors are found, because not all image types would match these results.

Returning neutral values would be okay in these cases.

Moreover I don't yet know which color types would be relevant for the majority of cases.

This is the exact problem I was facing, there is no single configuration which can lead to harmonious color schemes for most images.

I wonder if this is beyond the scope of a color extractor.

You are right, it is beyond the scope of a color extractor. But ultimately it is your decision whether to add it or not and If you are ready to maintain the extra facilities in case you do.
closing this issue, because the Type issue is fixed.

I started working on this feature @n-ce:

description
branch


Mapping Arrow Keys Panning to Button onClick

Hello, I am using deck.gl within a react component inside a redux app that toggles between Orbit and Orthographic views.
Regardless of the specific view, I want to create a set of "map control" buttons that the user can use to rotate or pan as an alternative to the keyboard or mouse. I want the pan from these control buttons to modify the viewState the same as if the user had pressed the arrow keys.
I was able to recreate rotating with buttons that change the rotationX and rotationOrbit in my viewState. However, with panning, it seems that the viewState.target is incremented by values derived from the current viewState.
From the docs, it looked as though I would need to create a custom controller, but I decided to make an issue to ask for any input.
Love the work you guys are doing, thanks.

One potential solution is that you can fake the mouse and keyboard events, pass them to controller's handleEvent function.

Thanks for the insight, I'll start with that approach.
Are there any examples I could follow for passing events from other components to a controller?

@michaelsklepowich We do not currently expose the panning logic. Depending on how much control you need, you can do one of the following (both of which are very hacky):

As @jianhuang01 suggested, pass a simulated keyboard event to the controller: https://codepen.io/Pessimistress/pen/gNaXGb
Find out the new view state:

import {_OrbitController as OrbitController} from<EMAIL_ADDRESS>const OrbitState = new OrbitController().ControllerState;

new OrbitState(currentViewState)
  .moveRight()
  .getViewportProps();	// This will give you the new view state

Thank you both, @jianhuang01 and @Pessimistress.
I was able to get panning working based on the "Find out the new view state" example by bringing the _getUpdatedState & _calculateNewTarget methods into my component.
A very hacky approach, indeed.


Improve (speed up) build.dev.watch task

First off I wanted to say how much I love this seeder.  It is very easy to use and follow.  One possible improvement that I could suggest would speed up the build.dev.watch task.  Currently, no matter what file changes, the entire dev destination gets rebuilt from scratch.  So that means that, on average, each change takes about 10-15 seconds to complete.  It would be faster if the watch was separated out so that it only updates files that were changes, instead of the whole directory.  So if I change something on a css/sass file, only that file should compile and the others (such as build.js.dev) should not.  This will make previewing in dev environment faster and less painful.

The change after the initial watch takes ~2.5 seconds, there was another discussion around this #496
The typescript build is incremental, an incremental build for things like css probably wouldn't be viable if you think about preprocessors ( which are supported ).
Rebuilding everything is the simple solution, rebuilding what changed is certainly possible but I'd have to tinker with it  to see if it could be done in a way which can be generic enough for the seed tools.
Perhaps a possible feature after the cli project is finished.
//cc @mgechev @ludohenin

Thank you for the answer.  Looks like from your comment in #496 node V5 is way faster than V4 (which I am using).  In addition, when I have time I will try to separate the watchers so that they only happen per type so that if a css/html/whatever change happens, the typescript rebuild (which is the most time consuming) doesn't trigger.

@mpetkov it will be great if you can help with this! Let me know what you find for node 5 vs 4, for your project.

@mgechev - Node 5 is definitely faster than 4.

Mid 2014 ( 16gb + SSD )
Fresh checkout of the angular2-seed

Node 4.4.0
Average of 5 runs dropping highest and lowest
Initial build.js.dev - 6.5s
Watch build.js.dev - 4.1s
Node 5.9.0
Average of 5 runs dropping highest and lowest
Initial build.js.dev - 4.1s
Watch build.js.dev - 1.8s

@mgechev - Unfortunately my work hasn't approved Node 5 so I am unable to install it on my work machine.  Here are my numbers on the latest version of node I am able to install:
Node 4.3.2:
Machine Specs: Windows 7; 8GB Ram; 2.6ghz i7-5600U
Current project size of src folder:  59 folders (110 Files) (will grow by about 2x or 3x by time its finished)
Average of 5 runs:
Initial build.js.dev - 12.67s
Watch build.js.dev - 10.47s
As noted by @d3viant0ne it would be a great addition/update to rebuild in dev only what has been changed.

@mpetkov yes, sounds like terrible benchmarks.

@mpetkov - Curious, does that system have a SSD or some sort of hybrid traditional mobile hard disk?

@d3viant0ne - It is a 256GB SSD (L8T-256L9G-HH).

I think part of the issue is that the watch triggers build.dev, which includes clean.dev. So I think the output folder is getting blown away after each change. I'm not sure if it's possible, but ideally the clean would only delete the files (or folders) affected by the change? Or, it might be worth considering whether a clean is actually needed during watch changes? I can see it being desired during startup, but I'm wondering if doing it for each change has more drawbacks than benefits?

Hmm no...just testing it by removing clean from the sequence didn't seem to affect the watch duration.

@brian428 - As an aside, rxjs5 beta.3 speeds up the watch task a bunch. I'll have it updated in the seed shortly.

I see you updated the RxJS dep to beta.3, but this seems to fail since Angular 2 still forces beta.2 as a peer dependency. Is there some trick I'm missing that will bypass that error?

Any progress on this? It would be really nice if single files are linted / compiled, a big performance hit atm compared to other seeds.

If performance is really bad with TS it's still possible to compile the tools, npm run gulp -- build.tools and npm run gulp -- clean.tools when developing tools.

@StefanKoenen - We can't realistically bump the seed until Angular2 bumps their rxjs version past beta2 which is on their radar but is blocked by a few issues.

Could we do and approach similar to with this - https://www.npmjs.com/package/jspm-watch One of the devs I worked with built it for our previous project we had more than you almost 800 files it cut our refresh build from 30s down to 5s.

I don't know how you guys are using it, but I get constantly high numbers:
[17:19:44] Finished 'build.js.dev' after 6.65 s
[17:19:44] Finished 'build.dev' after 13 s
Every change  I make, even in CSS causes the whole thing to build. This takes up to 1Minute until the browser refreshes.

@totev - A lot of that pain is due to rxjs beta.2
Compiling the tools as @ludohenin suggests can speed up the process but in the end it's going to come down to hardware & os.
OSX/Linux is faster than Windows
If you don't have a SSD, it's always going to be slower
Once angular2 updates beyond rxjs-beta.2 life will get a bit better
On a 2014 MBP running a heavily extended project, my initial builds are a third of what you posted and on an Ubuntu 14.04 VM on the same hardware via Fusion, it's actually slightly faster.

Also worth noting, Node 5.x is faster than 4.x and is quite stable.

@totev TypeScript's type checking and transpilation takes a lot, given all the ambient type definitions. On Unix-like environment a big project gets transpiled in less than 8 seconds but on Windows everything happens slower even with incremental transpilation enabled.
Since recently, I'm experimenting with the angular2-hot-loader. Using it any change on template and/or style is instantly visualized in the browser. Hopefully in a few weeks I'll publish a stable version which has limited feature set but works well with templates and styles.

@totev - It may be worth experimenting with running a linux vm or developing inside docker ( there are filesystem change detection issues here depending on os )
In essence share a directory with an Ubuntu VM, modify locally but have node and the browser running in Ubuntu.

Thanks for the tips @d3viant0ne! I am on osx and not lacking raw power. I will update the node version and test how it compares. I am however currently stuck with those times ~20sec on a cold start and ~15sec on every change regardless of the file type.
@mgechev I am looking forward to your angular2-hot-loader - your work and engagement are much appreciated!
@mgechev it is an enterprise project, however not yet a huge one - 200+ ts files with 60000+ locs. I just can't believe that an incremental compilation is taking place. I am surprised, that I am the only one suffering from high compile times and high latencies from code change to transpilation and browser reflection.

@totev - You can try bumping node to 5.x and rxjs to beta.4 ( 5 is broken, no clue about 6 ).
That said, this deviates away from the Angular2 dependencies. I'm doing it on a similar size project so it "works" but it does purposefully deviate away from what's supported and may have side effects I have not run into yet.
Assuming it doesn't completely brick the app, it will most definitely increase the speed of the watch cycle.

Sorry guys i was wondering where i can put some questions about the seed l was about to create a issue but i see that i can't ask for support so where can i do that?

@gvsdan - The best spot for questions is actually the gitter chat room, click the badge in the readme

I've made a pullrequest to gulp-typescript, fixed a small bug there that will solve the compilation of TS while only changing the HTML.
Please upgrade when there is a new release :).

@StefanKoenen - I've been watching that repo and a few others that have incoming performance fixes. If I happen to miss it, just @ me or PR the update and we will get it in one way or the other.

Using the seed for development during the last month, I noticed that css linting only slows us (and the build) down. What are your thoughts on commenting this task by default?

We also have it currently disabled. Our custom seed project used to have css streaming to the browser, which also sped up the roundtrips. What currently helps is using gulp-cached in the middle of the the ts files pipes. This currently shaves off about 6s and is pretty reliable.

@mgechev - IMO css linting should be an explicit task separate from the watch cycle. It still needs to happen, it just doesn't need to happen on every change.

Today I tried adding "isolatedModules: true" to my tsconfig.json file, which dramatically improved the build speed (build.js.dev step goes from 15s to 0.5s) and didn't seem to break anything. Can anyone explain whether it is safe to run with it set to true and/or whether this would be a good option to at least include on dev builds?

@totev: how are you using gulp-cached? I tried sticking it into the JS build dev task, but got errors about not finding classes. I assume that's because the pared-down set of files passed through gulp-cached doesn't give the compiler all the files it needs.

@brian428 in your build.js.dev.ts after the declaration of your project related sources:
...
let typings = gulp.src([
'typings/browser.d.ts',
join(config.TOOLS_DIR + '/manual_typings/**/*.d.ts')]);
let projectFiles = gulp.src(src).pipe(plugins.cached());
let result = merge(typings,projectFiles)
.pipe(plugins.debug())
.pipe(plugins.plumber())
.pipe(plugins.sourcemaps.init())
.pipe(plugins.typescript(tsProject));
...
Please note, that in order for this to work, you should disable the cleaning step upon every change:
//'clean.dev',

@dmittendorf by enabling isolatedModules you prevent compile-time type checking from running. At first this seems like you're giving up the selling point of TypeScript, however, on the other hand your text editor/IDE points you out the type errors anyway. Same for linting.
Although it doesn't seem like a good idea to disable type checking in dev build by default, I think it'll be great to point this compiler option out in the readme. Also, to me it seems that we can comment css-lint inside of gulpfile.ts for build.dev.
Thoughts?

Here's an article which recaps everything https://github.com/mgechev/angular2-seed/wiki/Speeding-the-build-up.

FYI, applying everything from the wiki page above, dropped the build duration of my project from 11-12s to 500ms.

Thank you everybody!  The updates that were implemented and described in the wiki page works amazing and cut down the build.js.dev step by about 10 times!
@mgechev - I was able to implement all of the changes except the gulp-cached.  The command merge doesn't allow typings to be passed to it and gives following error:

Argument type NodeJS.ReadWriteStream is not assignable to parameter type Observable

Also I believe that the last thing that can be done to improve the dev watch even more is to seprate it from 1 watch to 3 watches:  assets, js/ts, css.  Basically that way when you do a change to css it shouldn't fire the assets and ts watch.  The reason is because currently after all of these updates, the build.assets.dev takes the most time (which is awesome) because there are a lot of files in there.  But since I just made a change to a ts file, it shouldn't even happen.
Thank you all again for the great work.

@mpetkov there's one more optimization pending, which is introduced by a bugfix by @StefanKoenen.
The optimization you suggested definitely makes sense. In the next 2 weeks I will not be able to work on it but it is definitely in the roadmap.

@mgechev : has there been any further steps in the direction that @mpetkov suggests (separating assets/js/css)?

@Paladinium good point! I'll open an issue for this.

Thanks, I really appreciate this! And many others using your great project, too ;-)

This improvement is coming to the seed https://github.com/mgechev/angular-seed/pull/1443.


Why don't you remove _mimic suffix?

Currentry mimic joint impelemtation causes following error:
[move_group-3] [ERROR] [1669079269.679936655] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
[move_group-3] [ERROR] [1669079269.685043176] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
[move_group-3] [ERROR] [1669079269.690190959] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
[move_group-3] [ERROR] [1669079269.695329495] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
...

Actual the joint name in my URDF is crane_x7_gripper_finger_b_joint yet the controller outputs states of the crane_x7_gripper_finger_b_joint_mimic  joint.
Maybe the reason why this happend is here:
https://github.com/ros-controls/gz_ros2_control/blob/e2a475104b67134cebb697ed533fc3523dfe3924/ign_ros2_control/src/ign_system.cpp#L290
Could you remove the _mimic suffix?

Sounds like a fair point.

Sounds like a fair point.

Nope it doesn't :D

Actual the joint name in my URDF is crane_x7_gripper_finger_b_joint yet the controller outputs states of the crane_x7_gripper_finger_b_joint_mimic joint.

The reason for adding this is not to intervene with URDF joint description used by Rviz and robot_state_publisher. They parse the URDF and calculate automatically mimicked joints. The mimicked joints you get published by JointStatePublisher are only "virtual" values used for debugging and internal functionality of ros2_control.
I don't understand in which case MoveIt gives you this error. Can you explain a bit more? If you have defined your proper joint name, i.e., crane_x7_gripper_finger_b_joint in Moveit configuration, this should be fine and MoveIt should ignore this _mimic suffixed joints.

I'm sorry for the late reply.
I ran the command again.
I found that the mimic joint is working fine, although the error message is still displayed.

I also ran into this (and created https://robotics.stackexchange.com/questions/25107/ros2-moveit-cant-find-mimic-joint before finding this issue). The MoveIt error is from https://github.com/ros-planning/moveit2/blob/92ca89dca4fee679bc63a53bde9a992415a4d29e/moveit_core/robot_model/src/robot_model.cpp#L1301, and although I don't know the mechanism or reason, my best guess is that MoveIt is looking up all the controller interfaces by name, and one is not found because of the _mimic suffix.

For reference, this issue has similarly been a pain point in the ROS2 Control Plugins for Gazebo Classic: https://github.com/ros-controls/gazebo_ros2_control/issues/173
I appreciate the idea that adding the _mimic suffix adds some context that the joint is indirectly controlled / measured, but I'd argue that this should be the responsibility of the URDF designer and not the Gazebo plugin. Quietly adding a suffix leads to unexpected (and often unwanted) behavior in my view.

The reason for adding this is not to intervene with URDF joint description used by Rviz and robot_state_publisher. They parse the URDF and calculate automatically mimicked joints. The mimicked joints you get published by JointStatePublisher are only "virtual" values used for debugging and internal functionality of ros2_control.

@destogl - now that I have a bit more time to think about this, could you elaborate on what the RViz / robot_state_publisher issues were being avoided so I can better understand why the suffix is being added in the first place?
My understanding is that robot_state_publisher doesn't care whether a joint has a _mimic suffix in the name or not. It just looks for any joint that has the <mimic> element set and adds that to a set of mimic_ joints. When evaluating the state for the joints in the mimic_ set, the robot_state_publisher will override any state information in the JointState msg for those joints. I suppose that precludes your ability to track the "ground truth" Gazebo state of the mimic joint for debugging without manually passing the JointState msg, but would otherwise seem to be consistent with the "expected" operation.
For RViz, my understanding of any typical use cases that might involve joint states (visualizing TFs, Robot Models, etc), is that RViz again doesn't care what the name of a joint is or whether its a mimic. To my knowledge it uses the transforms published by robot_state_publisher, so as long as those are consistent, I don't foresee (or remember from when I tried this workaround ~1/2 a year ago) any RViz issues. I'm not aware of any RViz functionality that would break, but that's not to say they don't exist.
Please correct me if I'm wrong or missing something obvious

MoveIt error was reported with gazebo_ros2_control as well https://github.com/ros-controls/gazebo_ros2_control/issues/173
I also can't see any issues with removing _mimic suffix and rviz, see changes with #276


chore(main): release 0.2.0

:robot: I have created a release beep boop
0.2.0 (2024-01-25)
Features

fake bump (#9) (4a71723)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/bestow-code/core_analysis/releases/tag/v0.2.0 :sunflower:


Dynamic format changes

This applies the "Microsoft" approach to dynamic format changes. We did have some degree of format change detection, but there's some differences
We were setting the properties directly onto the sample provider media stream descriptor. Microsoft was setting it on the media stream descriptor that came from the sample request event arguments, and uses MF GUIDs to identify the properties. Technically these should be the same, but who knows?
For video, changing resolution using a filter is an easy way to see the differences -> it will lower the picture quality, but overall, the MediaPlayer will still render the video in the full size of the MPE, and the aspect ratio button doesn't seem to have any effect. The MediaPlayer does rise a NaturalVideoSizeChanged event, so I guess this is ok?
For audio, this PR will allow us to skip resampling when the audio format changes in the stream during playback. We will leave that to MF. This seems to work fairly well - I resampled audio using a filter from 44100 to 88200 and it seems to work as intended. Audio still has the expected speed and will not play "slower", so this means the stream descriptor and MF correctly respond to the change in sampling rate. So essentially, the only time we will be using a resampler is when the sample format is not one of those that we support.

It would appear setting the properties on the MediaEncodingProperties also works. So I am not sure why Microsoft uses the GUID approach.
I also slightly improved the logic for audio, by following the full procedure we do when opening a file for the first time.

Well, the funny part is we don't actually need to pass the sample provider at all, we can do the changes on our own pointers, but they only register during the sample event.
So I think this latest version should also cover seeking.

Well, the funny part is we don't actually need to pass the sample provider at all, we can do the changes on our own pointers, but they only register during the sample event.

Good find!
I added some improvements to the format switching. We do not support all formats natively, so even after a dynamic format change, we must check if resampler needs update.

Nice find with the unsupported formats too!

@lukasf
The build seems to fail due to winUI project, should we merge it anyway?

AppVeyor is red since quite a while. I need to fix it up but I am too lazy ^^ Just merge it.

I will take a look at the build.

Looks like the build is broken because the "debug" configuration tries to build the winui package without also building the dotnet package.
I don't think it  is even worth fixing right now on master, seeing how the winui_build is going to change these configs anyway.


fix: disable unused memfs which has invalid drive letter

Fix docs build failure in LVGL master since https://github.com/lvgl/lvgl/pull/6367
https://github.com/lvgl/lvgl/actions/runs/10499498306/job/29086379497#step:10:218
Is memfs used in any of the examples somehow, despite the drive letter not being set?

I think the examples are using MEMFS somewhere so let's set LV_FS_MEMFS_LETTER 'M' instead.


Mazumder - Strange authentication error blocking v1.53 data release

@rykahsay While calling file: deploy-data.sh - error below occurred. Can you assist?

mongodb was down -- please try now

@rykahsay Still getting a certificate error from Jonathon:

error fixed. Push was complete


Add arrow-function icon

Direct alternative to https://lucide.dev/icon/function-square, and a more recognisable, literal representation of function/method/etc…
See also other code/syntax related icons, e.g https://lucide.dev/icons?search=brackets
Related to #1063 and #1134.

Can we have an use-case for this? I know the meaning, but never saw this used as an icon.

Can we have an use-case for this? I know the meaning, but never saw this used as an icon.

@ericfennis Sure, sorry forgot to add for this one… See https://github.com/lucide-icons/lucide/pull/1236#issue-1701062635
But more specifically, planning to use this in my complete VS Code Lucide icons package, as symbol-function/method/constructor in the outline view (codicons symbol-* icons…)
I would have added it to #1134, but it already got merged :)

should not be called -function thats a use case, not sure what we could call it, arrow-big maybe, idk.

should not be called -function thats a use case, not sure what we could call it, arrow-big maybe, idk.

@jguddas arrow-fat is aka…

should not be called -function thats a use case, not sure what we could call it, arrow-big maybe, idk.

@jguddas arrow-fat is aka…

arrow-ligature feels pretty good, what do you think?

The use case is a bit too specific for the lucide library.
I understand it is an arrow, but in the context of "no-code", I wouldn't use this kind of icon to indicate a function.
For this use case function-square will do the job fine.


Feature: Substance

DataStructures!!! DataStructures!!! DataStructures!!!
This integrates a library (temporarily) called Substance (https://github.com/devboy/Substance), where I took Microsofts latest .NET data-structures from
https://github.com/dotnet/corefx & https://github.com/dotnet/coreclr, and patched them a bit so they play nicely with Unity.
The namespaces are still preserved (System.Collections.Immutable etc.), which makes it possible to progressively integrate/port more libraries into the Substance project.
So far it's just data-structures:

System.Collections
System.Collections.Generic
System.Collections.Immutable

But there is plenty of potentially useful stuff in there like Threading.Task,Collections.Concurrent,Crypto,Cache,FileIO,NetworkIO and much much more.
Example:
using UnityEngine;
using System.Collections;
using System.Collections.Immutable;
using System.Net;
using System.Net.Cache;
using System;
using Wooga.Lambda.Network;
using Wooga.Lambda.Network.Transport;

public class Test1 : MonoBehaviour {

	// Use this for initialization
	void Start () {
		Debug.Log (Tuple.Create<string,int>("a",1));
		Debug.Log (ImmutableArray.Create("a","b","c"));
		Debug.Log (ImmutableList.Create(1,2,3,4));
		Debug.Log (ImmutableQueue.Create("a","a"));
		Debug.Log (WebRequestTransport.CreateHttpClient().Get("http://google.com").Body);
	}

	// Update is called once per frame
	void Update () {

	}
}

[] Remove aliases from Seq
[] Remove File and Location from IO.FileSystem
[] Replace FileSystem.GetFileAsync with FileSystem.ReadAsync (returning an IEnumerable)
[] Reimplement VirtualFileSystem
[] Fix all libraries that use these APIs
[] Evaluate Wooga.Networking (How does it feel to use this with the file api?)

[ ] make substance.immutable run with .net 2 subset

Considering giving a  short preso at least for our team about the new stuff usable?

i will consider looking at networking done for now. i think we need to do that again as soon as we actually start using it (in coreservices).


Using Kleopatra to verify issue

I am getting this error message.

I will try reproducing this when I need boot to windows.

OK so two different developers?

Yes


Add query config to control the hash table increase size

(1) Add query config to control the hash table increase size;
(2) Add dedicated aggregation test case with non-spilling partition to trigger the bug in grouping set;
(3) Add Spiller::Stats to include all the spiller related stats and add spilled partitions.

Accepted the diff, please address the below before landing.
'hash table size' sounds like the number of elements in the buckets array.
But here we mean aggregation memory reservation. We would probably apply the same to hash join build.
So we could call this spillableReservationGrowthPct and express this as a percentage of the previous size. 25 means exponential growth along a series of integer powers of 5/4.
The reservation grows by this much until it no longer can, after which it starts spilling.
Could you change the naming to spillable reservation growth pct in the code and description?


How do I pass JSON/Map/Vec into WASI?

hello, Actually, I wanted tochange this function to wasi :
fn wasi_fn(
    _topic: &str,
    params: Value,
    _context: &HashMap<String, String>,
) -> Result<Vec<u8>>

so, i think if i can pass json/map into wasi, or i pass Vec then will be transformed to json/map in wasi.Does the idea work?

Right-this-red-hot-second I don't think this will work with WASI, but with interface types and an implementation like wit-bindgen everything except the hash map should work.
Unfortunately this is still somewhat nontrivial to implement today, but for following this work I'd recommend following the interface-types and wit-bindgen repositories.


Lm_head layer Problem in gemma2 : 2b-it

System Info
all libraries are latest versions
python 3.11
Who can help?
No response
Information

[X] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder
[X] My own task or dataset (give details below)

Reproduction
def get_linear_layers(model):
    """Extract linear layers from the model for LoRA configuration."""
    model_modules = str(model.modules)
    pattern = r'\((\w+)\): Linear'
    return list(set(re.findall(pattern, model_modules)))

     def _apply_lora(self, model):
        """Apply LoRA configuration to the model."""
        lora_config = LoraConfig(
            r=16,
            lora_alpha=32,
            lora_dropout=0.05,
            bias="none",
            target_modules=get_linear_layers(model),
            task_type="CAUSAL_LM",
        )
        model = get_peft_model(model, lora_config)

when i run the ft script the first warning is this :

UserWarning: Model with tie_word_embeddings=True and the tied_target_modules=['lm_head'] are part of the adapter. This can lead to complications, for example when merging the adapter or converting your model to formats other than safetensors. See for example https://github.com/huggingface/peft/issues/2018.

but it works fine and i get adapters in which i can run later using Peftmodel.from_pretrained(model,adapter)...
but when i want to run convert adapters to gguf so i merge them with the LLm to get a final version of gguf model that i can run for inference i run the following script using llama.cpp:
 python convert_lora_to_gguf.py --base "/models/gemma-2-2b-it" --outfile "/gemma-2b/adapters.gguf" --outtype auto  "/ft_models/gemma-2b/adapters"
INFO:lora-to-gguf:Loading base model: gemma-2-2b-it
INFO:hf-to-gguf:choosing --outtype bf16 from first tensor type (torch.float32)
INFO:gguf.gguf_writer:gguf: This GGUF file is for Little Endian only
INFO:lora-to-gguf:Exporting model...
Traceback (most recent call last):
  File "/home/ec2-user/abdullah/projects/llama.cpp/convert_lora_to_gguf.py", line 432, in <module>
    model_instance.write()
  File "/home/ec2-user/abdullah/projects/llama.cpp/convert_hf_to_gguf.py", line 434, in write
    self.prepare_tensors()
  File "/home/ec2-user/abdullah/projects/llama.cpp/convert_hf_to_gguf.py", line 298, in prepare_tensors
    for new_name, data_torch in (self.modify_tensors(data_torch, name, bid)):
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ec2-user/abdullah/projects/llama.cpp/convert_lora_to_gguf.py", line 408, in modify_tensors
    raise ValueError("lm_head is present in adapter, but is ignored in base model")
ValueError: lm_head is present in adapter, but is ignored in base model

Expected behavior
what should i do for this kind of issue?

but i am noticing that when i target the lm_head as well the accuracy of the fine tuned tasks gets higher by almost 10%

@OmarHelwe10 If the embeddings are tied, lm_head is the embedding layer, so you can train both without altering the architecture by training only the embedding (which lm_head points to).
Gguf conversion currently does not allow to have lm_head different from embedding as this alters the architecture of gemma and it’s not supported by llamacpp at the moment.
So, if you want to use gguf conversion with a tied embedding model then do not train lm_head.
(If there is a strong case from the community to have gemma version with embeddings not tied then this might change in llamacpp in the future.)
if you do not want to use gguf then you can follow this approach in #2018 to train lm_head.

Gguf conversion currently does not allow to have lm_head different from embedding as this alters the architecture of gemma and it’s not supported by llamacpp at the moment.

Thanks for the info, I didn't know that.


Prepare for v0.11.0 release

Previous: Prepare for v0.10.0 release

Coverage remained the same at 100.0% when pulling a89d0965a24d43ee94de7569003716bf36b2895c on prepare-0.11.0 into 53cfdc992bb02c0fb6dfc19184d5665aa6c14915 on master.

Coverage remained the same at 100.0% when pulling a89d0965a24d43ee94de7569003716bf36b2895c on prepare-0.11.0 into 53cfdc992bb02c0fb6dfc19184d5665aa6c14915 on master.

Coverage remained the same at 100.0% when pulling a89d0965a24d43ee94de7569003716bf36b2895c on prepare-0.11.0 into 53cfdc992bb02c0fb6dfc19184d5665aa6c14915 on master.

Coverage remained the same at 100.0% when pulling a89d0965a24d43ee94de7569003716bf36b2895c on prepare-0.11.0 into 53cfdc992bb02c0fb6dfc19184d5665aa6c14915 on master.


Cluster create custom-scripts layout is difficult to read

-------------------------------------------
spark cluster id:        cmbt
spark cluster size:      2
>        dedicated:      2
>     low priority:      0
spark cluster vm size:   standard_f2
custom scripts:          [{'script': './custom-scripts/jupyter.sh', 'runOn': 'master'}, {'script': './custom-scripts/hdfs.sh', 'runOn': 'all-nodes'}]
file shares:             0
docker repo name:        None
wait for cluster:        True
username:                spark
-------------------------------------------
Please wait while your cluster is being provisioned

The current layout for custom-scripts on cluster create is very difficult to read.

Closing since custom scripts are deprecated.