Made self-tables be pushed on the stack for future use.

This allows for optimizations on BittyBuzz. It could also be applied to Buzz, if it is needed.

Looks good to me. @ilpincy ? Any final words before merge?

@Belkharym, @ilpincy and I were discussing about this yesterday. This would change a behavior of Buzz. Here is an example:
function selfx_printer() {
  print self.x
}

u = {
  .x = 67
  .fun = selfx_printer
}

u.fun() # Should this be an error? Or should it print 67?

This would print 67 if Buzz did the same activation record optimization we will do in BittyBuzz (which is how JavaScript behaves). Currently tough, the self table would be kept, and since the closure wasn't created inside a table, the self table would be nil, so there would be an error. This is how Python would behave.
To decide on the correct behavior @ilpincy said he was going to talk with another professor, as well as with you, about what behavior would be best.

I've given some thought as well on the subject, and I think this is the correct behavior (to print 67) for free functions. Carlo told me of his tests with Python, where he used a class:
class T(object):
    x = 34
    def fun(self):
         print(self.x)

class U(object):
     x = 21
     def __init__(self, t):
         self.fun = t.fun

U(T()).fun() # Prints 34

In this case the closure is a bound method to an object T, and it should print T.x. For free functions, there is no method binding, so it should use the symbols that are in its scope or above. I guess we could go the Python route, and make bound methods...
BTW, if you are curious, you can unbind methods in Python by getting the function pointer and rebinding to a new class. Try:

class T(object):
    x = 34
    def fun(self):
         print(self.x)

class U(object):
     x = 21
     def __init__(self, t):
         self.fun = types.MethodType(t.fun.__func__, U)

U(T()).fun() # Prints 21

During our discussion yesterday at some point i proposed what Gio is saying, too. I also think it's the Python route is the best.


Operation results

Hello, what is the running result of the program

@yanhui1111 What do you mean by running result?


Enhance the timetable

Addresses:

(As a user, I should be able to select multiple rows of the grid) https://github.com/freeCodeCamp/LetsMeet/projects/1#card-2218730

Also includes changes to make the code more readable.

Can you please change the vertical bar to touch the hour label ? and left align the label ?

I mean I could but that would take a couple of days and this PR is supposed to fix a bug too so...


Please, update the plugin!..

Please, when will you update the plugin???
We're waiting for fix:
(1) A problem in uppercase and lowercase letters of the nics! (issue #85) — the hacker may enters the server with wrong nick!
(2) A problem with /reg and /l commands! — we’re losing new players
(3) A problem with /rmpass command! (issue #87) — errors
Best regards!

@lenis0012 why no answer?
PLS ANSWER

I msged him on Bukkitdev and Spigotmc.org today, I may get an answer in the next few days.
Thanks for waiting @swordin

Thnx a lot! )

@swordin @Tzzzt123 Can't give you guys an exact date, but I am going to do it as soon as I have time.
Which will probably be very soon.
Thanks for showing your interest, it definitely makes me more excited to work on it.

Thank you very much! Спасибище! )

Thanks alot @lenis0012

@swordin @Tzzzt123 https://github.com/lenis0012/LoginSecurity-2/commit/b9a43407f6be61fc43bb1b954dc8c68576503f26
its in progress

btw @lenis0012 did you read my msgs on Spigotmc and bukkitdev?

@Tzzzt123 Not yet. I am at work right now but ill check it when i get home

@lenis0012 ok

@Tzzzt123 @swordin Lot's of progress today.
I'm almost done switching out the database engine, which is around 75% of the work for this update.

Cool! )

@lenis0012 NICE

The audience froze in anticipation... )

yep @swordin
@lenis0012 will we have to do /lac dbimport Legacy2.1 next time or will it auto-inport?
Thanks for answering
@Tzzzt123

@Tzzzt123 LoginSecurity 2.2 uses the same data format as version 2.1.
There is no need for any conversion/importing.

Good.

Praise God! )

Please...

@swordin Work has been happening behind the scenes.
I won't disappoint =)

And that is great! I will update it today!

Hello, the problem with /l is not fixed:

(2) A problem with /reg and /l commands! — we’re losing new players

The rest things I did not check.

explanation: as it was earlier - when I enters with /l  it says: "wrong password"

Moreover, several players could not enter - the password did not match (((
So I had to roll back the base, reset the passwords to these players and re-install 2.1.6 back (

Regarding wrong passwords - it's my mistake. Sorry )
But the problem with /l (and, perhaps, /reg) - the problem is actual.

@swordin Yes, this issue is only fixed in the in-development 2.2.0 version.
I did not backport it to 2.1.7

@swordin Version 2.1.7 is the same as 2.1.6 except that it is compatible with minecraft 1.12

As I can see - not 1.12, but 1.8:
http://shpagin.ru/enigmaproject/217.png

@swordin 1.12 wasn't in the selection menu.
It supports 1.8, 1.9, 1.10, 1.11 and 1.12

Ok. Anyway, we're waiting the version which corrects the bugs.

PLEASE UPDATE TO 2.2
we can't wait fix errors anymore


OSX build instructions

This looks really cool!
I noticed the link in the README for "OS X: build instructions" is a dead-link. How do I build it?

I tried
cargo install cargo-web
make

and got errors:
error: failed to run custom build command for `coreaudio-sys v0.2.2`

Caused by:
  process didn't exit successfully: `/private/tmp/pyckitup/target/debug/build/coreaudio-sys-65fb12b8028a76ce/build-script-build` (exit code: 101)
  --- stdout
  cargo:rustc-link-lib=framework=AudioUnit
  cargo:rustc-link-lib=framework=CoreAudio

  --- stderr
  //Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h:55:10: fatal error: 'os/workgroup.h' file not found
  //Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h:55:10: fatal error: 'os/workgroup.h' file not found, err: true
  thread 'main' panicked at 'unable to generate bindings: ()', /Users/konsumer/.cargo/registry/src/github.com-1ecc6299db9ec823/coreaudio-sys-0.2.2/build.rs:144:10
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: build failed
make: *** [default] Error 101

cargo build works on RustPython version, so I'll mark this closed. Sorry for the noise. Thanks for making this!


message_exists, add errorNamespace like check_variables

moving it to a global syntax object, https://github.com/abaplint/abaplint/issues/467


No Timber Default Template?

I installed the plugin (tried both way) but there is no theme installed? I am trying to guess/figure out the best way to use this atm.
Is the theme not included anymore??

@JustSteveKing You can download the Timber starter theme here: Upstatement/timber-starter-theme

That is perfect thank you @corygibbons ! Will have a look through and see what I can do!
Does the plugin come with the built in caching that comes with TWIG?

@JustSteveKing The caching page in the wiki has a good rundown of what's available.


Added missing sudo in front of systemctl

Added missing "sudo" in front of systemctl for users that are not root.
Description

Fixes # (issue)
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A
[ ] Test B

Test Configuration:

Firmware version:
Hardware:

Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

Thanks @MomaBear1 !


Need support for setting HA type in OpenStack agent

What's this change do?
Adds support for setting f5_ha_type in f5-openstack-agent.ini file.
Where should the reviewer start?
playbooks/roles/configure_lbaasv2_agent/tasks/main.yml
Any background context?
Change needed to support configuring  BIG-IP clusters.

@jlongstaf: how did you test?

@pjbreaux: usingTLC deployment using install_configure_f5-lbaasv2.sh, testing variations of -e option of ansibile-playbook command.


Fix Fix that it does not report error when export table to S3 with an incorrect ak/sk/bucket

Proposed changes
Issue Number: close #xxx
Problem:
It will return a result although we use wrong ak/sk/bucket name, such as:
mysql> select * from demo.student
    -> into outfile "s3://xxxx/exp_"
    -> format as csv
    -> properties(
    ->   "s3.endpoint" = "https://cos.ap-beijing.myqcloud.com",
    ->   "s3.region" = "ap-beijing",
    ->   "s3.access_key"= "xxx",
    ->   "s3.secret_key" = "yyyy"
    -> );
+------------+-----------+----------+----------------------------------------------------------------------------------------------------+
| FileNumber | TotalRows | FileSize | URL                                                                                |
+------------+-----------+----------+----------------------------------------------------------------------------------------------------+
|          1 |         3 |       26 | s3://xxxx/exp_2ae166e2981d4c08-b577290f93aa82ba_ |
+------------+-----------+----------+----------------------------------------------------------------------------------------------------+
1 row in set (0.15 sec)

The reason for this is that we did not catch the error returned by close() phase.

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

(From new machine)TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 45.78 seconds
stream load tsv:          538 seconds loaded<PHONE_NUMBER>9 Bytes, about 132 MB/s
stream load json:         21 seconds loaded<PHONE_NUMBER> Bytes, about 107 MB/s
stream load orc:          65 seconds loaded<PHONE_NUMBER> Bytes, about 16 MB/s
stream load parquet:          31 seconds loaded 861443392 Bytes, about 26 MB/s
insert into select:          29.1 seconds inserted 10000000 Rows, about 343K ops/s
storage size:<PHONE_NUMBER>7 Bytes

(From new machine)TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 45.72 seconds
stream load tsv:          538 seconds loaded<PHONE_NUMBER>9 Bytes, about 132 MB/s
stream load json:         21 seconds loaded<PHONE_NUMBER> Bytes, about 107 MB/s
stream load orc:          65 seconds loaded<PHONE_NUMBER> Bytes, about 16 MB/s
stream load parquet:          31 seconds loaded 861443392 Bytes, about 26 MB/s
insert into select:          29.4 seconds inserted 10000000 Rows, about 340K ops/s
storage size:<PHONE_NUMBER>7 Bytes

run p0

run buildall

(From new machine)TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 47.06 seconds
stream load tsv:          538 seconds loaded<PHONE_NUMBER>9 Bytes, about 132 MB/s
stream load json:         20 seconds loaded<PHONE_NUMBER> Bytes, about 112 MB/s
stream load orc:          65 seconds loaded<PHONE_NUMBER> Bytes, about 16 MB/s
stream load parquet:          31 seconds loaded 861443392 Bytes, about 26 MB/s
insert into select:          29.7 seconds inserted 10000000 Rows, about 336K ops/s
storage size:<PHONE_NUMBER>2 Bytes

run beut

run buildall

(From new machine)TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 46.01 seconds
stream load tsv:          558 seconds loaded<PHONE_NUMBER>9 Bytes, about 127 MB/s
stream load json:         20 seconds loaded<PHONE_NUMBER> Bytes, about 112 MB/s
stream load orc:          65 seconds loaded<PHONE_NUMBER> Bytes, about 16 MB/s
stream load parquet:          31 seconds loaded 861443392 Bytes, about 26 MB/s
insert into select:          29.4 seconds inserted 10000000 Rows, about 340K ops/s
storage size:<PHONE_NUMBER>1 Bytes

run compile

run p0 p1

run external


Specify deployment artifacts that needs to be synchronized

The following doc speaks about setting up deployment synchronization between nodes. Better if the doc can specify what are the exact files/directories that needs to be synced explicitly. Ex: workflows, user stores
https://is.docs.wso2.com/en/latest/setup/configuring-rsync-for-deployment-synchronization/

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Atlas Engine: The cursor leaves artifacts when you delete a long line

Windows Terminal version
1.16.2524.0
Windows build number
10.0.22000.0
Other Software
pwsh 7.2.6, PSReadLine 2.2.6
cmd.exe
Steps to reproduce
Type long string and delete they by holding Backspace key pressed.
This behavior is only then "useAtlasEngine": true

Expected Behavior
No artifacts
Actual Behavior
Deleting long line leaves artifacts.

Actually I'm not entirely sure if this is an AtlasEngine issue... Cursor wrap around is just weird right now and my cursor vanishes / stops blinking when I wrap to the previous line with backspace.

Figured it out: There's a different behavior regarding cursors between conhost and Windows Terminal. In case of the latter we don't necessarily call PaintCursor during cursor movement, because the cursor blinker never stops "blinking".


No path autocompletion of ES6 modules.

From @admmasters on April 5, 2016 13:32

VSCode Version: Version 0.10.14-insider (0.10.14-insider)
OS Version: OSX 10.11.4

Steps to Reproduce:

Using ES6 within foo.js try and use autocompletion to insert bar.js
"No suggestions"

I don't think this is a bug - rather a feature that does not exist, considering the nature and shape of modern JS, IMHO this should be standard - WebStorm for instance has this and Atom has many plugins that do this - if this is the role of an extension then fair enough - I'll look into writing one, just feel this should be part of the editor core.
Copied from original issue: Microsoft/vscode#4963

Dupe of #188.


fix: error when sonic ends connection

It can happen when provided password is invalid, for example. Wasted a few hours just to understand I made a typo in password and library didn't notify me (it also caused a memory leak in splitText, because it was trying to divide text by infinity 0 byte chunks (because 0 is the default value for cmdMaxBytes and it didn't get updated as it only gets updated in STARTED)).

@alexisvisco - Can you merge this?

Hi ! Im looking at it right now thanks you for you pull request


supertype not defined

From Atom console with Julia process running:
> 1+1
UndefVarError: supertype not defined
 in distance at C:\Users\Eric Forgy\.julia\v0.4\Media\src\system.jl:8
 in nearest at C:\Users\Eric Forgy\.julia\v0.4\Media\src\system.jl:13
 in anonymous at C:\Users\Eric Forgy\.julia\v0.4\Media\src\system.jl:17
 in _mapreduce at reduce.jl:145
 in mapreduce at reduce.jl:159
 in nearest at C:\Users\Eric Forgy\.julia\v0.4\Media\src\system.jl:16
 in getdisplay at C:\Users\Eric Forgy\.julia\v0.4\Media\src\system.jl:114
 [inlined code] from C:\Users\Eric Forgy\.julia\v0.4\Atom\src\eval.jl:41
 in anonymous at C:\Users\Eric Forgy\.julia\v0.4\Atom\src\eval.jl:108
 in withpath at C:\Users\Eric Forgy\.julia\v0.4\Requires\src\require.jl:37
 in withpath at C:\Users\Eric Forgy\.julia\v0.4\Atom\src\eval.jl:53
 [inlined code] from C:\Users\Eric Forgy\.julia\v0.4\Atom\src\eval.jl:107
 in anonymous at task.jl:58

I've tried Pkg.update() and unistalling/reinstalling ink and atom-julia-client. It's been like this for a while, so I resigned myself to just using Juno as an Editor, but now my packages are big enough they take more than 10 seconds to load, so the Juno workflow would be nice.
julia> versioninfo()
Julia Version 0.4.5
Commit 2ac304d (2016-03-18 00:58 UTC)
Platform Info:
  System: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.3

Just tried Pkg.checkout("Media") and it didn't work...

Just tried Pkg.checkout("Atom") and it didn't work either...

Not sure it'll help, but I'd try Pkg.free()ing Atom, Media and CodeTools unless you need to be on master on those packages (Media.jl master is 0.5 only, I think).

Oh thank you thank you :pray: That worked :)

I just installed Atom/Juno on Ubuntu 16.04 and I get the same error message. The fixes suggested here don't work.

Try Pkg.update()

Pkg.Update() doesn't help and Pkg.status() shows I am on Media 0.2.1

Did you restart Julia/Juno?
I can't reproduce this with the latest tags of all packages. If that's not the issue, make sure you don't have any master branches in Pkg.status().

Hey Mike,
Thanks for the quick response. Restarted Julia and Juno and now it works
fine! The program said it had to recompile stale cache for media and atom.
On Aug 11, 2016 8:21 PM, "Mike J Innes"<EMAIL_ADDRESS>wrote:

Did you restart Julia/Juno?
I can't reproduce this with the latest tags of all packages. If that's not
the issue, make sure you don't have any master branches in Pkg.status().
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/JunoLab/atom-julia-client/issues/178#issuecomment-239339497,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJAAhDuGnc8yfUxwibYErgqesQvhQwlHks5qe8q0gaJpZM4Iju5j
.

Great, glad you got it sorted – enjoy!


SquirrelSQL: Node / Relationship - Results don't work, all columns null

:play movies

MATCH (actor:Person {name: "Tom Hanks"})-[r:ACTED_IN]->(movie:Movie) RETURN actor,r,movie

Related to #43 & #48

commit 260a5d3  adds two failing tests that highlight the problem

Fixed in 3e34ea8


[BugBash] [SDK] Unexpected error when using Azure identity without permission

Describe the bug
Unexpected error will be thrown in node SDK when using an Azure identity without proper permission
To Reproduce

Create a Web PubSub
Use node SDK to send message, for example:let c = new DefaultAzureCredential();
let client = new WebPubSubServiceClient('https://xyz.webpubsub.azure.com', c, 'test');
await client.sendToAll('hello world');

Make sure you have an Azure credential without permission to Web PubSub in your environment

Expected: should throw an error about no permission
Actual: it throws an error that I cannot understand...
Exceptions (if any)
RestError: Error reading response as text: aborted
    at IncomingMessage.<anonymous> (/home/chenkennt/repo/test/wpsbugbash/node_modules/@azure/core-rest-pipeline/dist/index.js:1684:24)
    at IncomingMessage.emit (node:events:390:28)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'PARSE_ERROR',
  statusCode: undefined,
  request: undefined,
  response: undefined
}

Further technical details
Version may matter:
Node: v16.13.0
@azure/web-pubsub: ^1.0.0-alpha.20211028.3
@azure/identity: ^2.0.1

401 status code has been set twice when authorization failed.
The second attempt raises an exception, which results in a missing Content-Length header in the HTTP response since the request fails to be ended.

Sent a hotfix PR.


Fix account URL

Fixes #671. Note that I did not change the ACMEv1 code at all, not sure what that version of the protocol is supposed to do.
We store the account URL on account creation in the account_id.json file.
When reading the file, if the attribute is missing, we fall back to previous behaviour, with a warning message.

Per https://tools.ietf.org/html/rfc8555#section-7.3

The server returns this account object in a 201 (Created) response, with the account URL in a Location header field.  The account URL is used as the "kid" value in the JWS authenticating subsequent requests by this account (see Section 6.2).  The account URL is also used for requests for management actions on this account, as described below.

Looks good, but it would be great if instead of showing a warning every time it would fallback silently and only throw an error if there is no account url when initially fetching account information,.

Also on new accounts the ID wouldn't actually be required, and might even be against what the RFC describes, so it would be better to simply not store it.
So maybe a fallback logic like
if url exists: use url
elif id exists: use fixed accounts url with id
else fetch account url

I believe I implemented all your suggestions.
However, I am not sure about the case elif id exists: use fixed accounts url with id: we could just fall through the else fetch account url case, and retrieve (and store) the account URL. This would mean transparently updating the account_id.json file from {"id":"42"} to {"url":"https://something/blah/42"}. Tell me if you would prefer that, it's only 6 lines to remove :wink:

Yea, i guess you are right, it would probably be best to simply fetch the url and have everything up to standard. I was thinking about this way to complicated when I answered before...

All right, I've updated my commit.

Thanks again! And sorry for the slow response, I'm surprisingly busy setting up video infrastructure for my university at the moment...

No worries, and thank you for merging all those PRs! :tada:


Translation broken, ext-intl or symfony/polyfill-intl-messageformatter should be required in composer

New installation using composer create-project, when I open the demo in the browser I get:

An exception has been thrown during the rendering of a template ("Cannot parse message translation: please install the "intl" PHP extension or the "symfony/polyfill-intl-messageformatter" package.").

Please add a requirement for ext-intl or symfony/polyfill-intl-messageformatter in composer.json. If you want I can submit a PR.

We should add a requirement on the polyfill, so that the demo keeps working without ext-intl


Redesigned Button and Navbar component

Summary

Redesign UI
Description for the changelog

• Added new package SASS
• Added new styles
• Added Button component
• Redesigned Navbar component
A picture or screenshot regarding change

Checklist

[x] Build and linting is passing.
[x] This change is not breaking existing flow of a system.
[ ] I have written test case for this change.
[x] This change is tested from all aspects and scenarios.
[ ] Implemented any new third-party library (Which not existed before this change).

@loharganesh Change looks good. But I have the below queries:

Register (to be a volunteer) button is missing from the navigation bar.
The previous design of the app was such as Register and Login buttons were in a collapsible navbar. People were not able to find those options easily. So we kept the Register and Login button such as they'll be always shown in the front (obviously when not logged in only). Can we do something here as well?
How Logout action button will look like?

@loharganesh  Can you please make sure that the login and register button should not  be in the menu we want it to display in front in the mobile view

Ok, i will come with something, where login and register buttons will be visible to user all the time if not logged in.

@PatilShreyas @imPiyushrRajput can we put logout button inside navigation ?

@loharganesh Closing this due to inactivity. Feel free to re-open!


fixed kafka fetch failed when broker restart

Codecov Report

Merging #47 (1c051a1) into main (6ab6a50) will decrease coverage by 0.08%.
The diff coverage is 42.85%.

@@            Coverage Diff             @@
##             main      #47      +/-   ##
==========================================
- Coverage   58.68%   58.59%   -0.09%
==========================================
  Files          12       12
  Lines        1077     1082       +5
==========================================
+ Hits          632      634       +2
- Misses        359      362       +3
  Partials       86       86

Impacted Files
Coverage Δ

pkg/kafsar/group_coordinator_standalone.go
61.49% <28.57%> (ø)

pkg/kafsar/kafka_impl.go
49.71% <57.14%> (-0.15%)
:arrow_down:

Continue to review full report at Codecov.

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


Iconify endpoint for local collections fails because rendering mode is client-side only

I am using @nuxt/icon in a Nuxt app where the rendering mode is client-side only. According to the documentation:

By default, this module will create a server endpoint /api/_nuxt_icon/:collection to serve the icons from your local server bundle

However there shouldn't be an api directory in this situation as it is bundled under the server directory and this one is not used for client-side only apps
This results in the app makign a request to https://<host>/api/_nuxt_icon/tri.json?icons=paperplane, this returns the Nuxt's 404 error page, then it makes a request to https://api.iconify.design/tri.json?icons=paperplane
Is that supposed to happen ? Or does the application need additional configuration for this usecase ?

Do you see ssr: false? Nuxt Icon works mainly with the server, on ssr:false it will fallback to Iconify's public API, which does not have your custom icon. I am not sure if there would be a solution to that, or we might need to update the docs to make it clear

What do you mean by "Do you see" ? ssr: false is how I achieve the client-side only rendering mode so this is supposedly the only thing I set to achieve this behaviour
Okay, I understand. We are effectively dealing with custom icons, not many so we could easily turn them into inline svgs. So I guess for the moment the best thing to do is to update the documentation to explicit this constraint.
These is a vague idea and I haven't checked the implementation behind custom icon collection, but perhaps during the build phase we could detect the rendering mode, and move the icon assets into the public folder instead of the API folder.
I guess there is a little bit more to this, but if the icons can be statically detected at build time we could just insert them in the build ?

The point of Nuxt Icon is to handle dynamic icons loading. We couldn't statically detect the case of <Icon :icon="name" />. For static, built-time solution I would recommend using UnoCSS's icon preset along side

I may be seeing this same issue. I'm doing nuxt generate to generate a static site, and the icons don't show up (they are fine in dev mode). I installed the icon uil module locally. But I don't see any way /api/_nuxt_icon/uil.json?icons=moon%2Csun could return a useful result -- it gives a 404.
My nuxt/vue component just has <Icon v-if="colorMode.preference === 'dark'" name="uil:moon" />

Is there any update on this? It seems this package does not work when running nuxt generate

I have the same (or similar) issue. On first load, the icons show up on the page I visit, but if I navigate to another page on my app, I get a 404. If I refresh this page, the icons show up and the 404 is not thrown. Navigating to other pages repeats this behaviour consistently. Strange behaviour.
GET /api/_nuxt_icon/mdi.json?icons=alert-decagram%2Carrow-left-circle-outline%2Ccalculator-variant%2Crobot-excited-outline%2Cvideo-input-antenna 404 (Not Found)

Running nuxt 3.12.3 and @nuxt/icon 1.0.0. The below is a snippet from nuxt.config.ts. I create the app using nuxt build and the serve the output. I have other routes apart from the ones listed below which load dynamic data.
ssr: true,

  nitro: {
    prerender: {
      routes: [
        '/about',
        '/blog/all',
        '/blog/the-creation',
      ]
    }
  },

  routeRules: {
      '/blog/**': { prerender: true },
  },

I may be seeing this same issue. I'm doing nuxt generate to generate a static site

Sorry because I know it's not related to the original question (about custom collections), but I was having this same issue @garyo mentioned with SSG. My solution was to use nuxi build instead (not purely static anymore). I was using Netlify and it worked with minimal configuration. See https://nuxt.com/deploy/netlify.

My solution was to use nuxi build instead (not purely static anymore)

Sure, why not add a back end to the static site just to fetch icons?! (I thought about that too, but couldn't go that far)

My solution was to use nuxi build instead (not purely static anymore). I was using Netlify and it worked with minimal configuration.

Hi @gangsthub, could you please elaborate a bit how you fixed it. I am running into same problem.
I tried:
nuxi build
node .output/server/index.mjs -> does not work on local setup
./node_modules/.bin/nuxi start -> this work on local setup
but deployed on Netlify, it does not work.

The default should be improved in https://github.com/nuxt/icon/commit/de92533214c63d5a7a31ed2d54f27f9e4c4c645f
And the docs will be improved in #206 - let me know of anything else is missing

could you please elaborate a bit how you fixed it

@rajatjindal, when changing from nuxi generate to nuxi build you will have to change the build commands in your Netlify/Vercel/etc configuration. You can see mine here:
https://github.com/gangsthub/graficos.net/blob/3f28a753714590812d8e893ff623f008f71c9753/netlify.toml
(The fact that I'm using pnpm should be irrelevant in this context)
I linked the docs for deploying in Netlify because that's the platform I'm currently using and I'm only using the default configuration.
But, as @antfu said, I'd try to use the static build again with the latest version after https://github.com/nuxt/icon/commit/de92533214c63d5a7a31ed2d54f27f9e4c4c645f 😉

I thought the command to install locally solved this problem, right?
npm install @iconify-json/{collection_name}


download response 403 error

request headers: {Range=[bytes=0-0], User-Agent=[FileDownloader/1.7.6]}
response headers: {null=[HTTP/1.1 403 Forbidden], Connection=[Close], Content-Length=[2727],
Content-Security-Policy=[frame-ancestors], Content-Type=[text/html; charset="utf-8"],
X-Android-Received-Millis=[1604387185556], X-Android-Response-Source=[NETWORK 403], X-Android-Selected-Protocol=[http/1.1],
X-Android-Sent-Millis=[1604387185546], X-Content-Type-Options=[nosniff], X-Frame-Options=[SAMEORIGIN], X-XSS-Protection=[1; mode=block]}
Chrome can be downloaded, and the server does not impose any restrictions. With this download, there are some places where the download can't be reported. The log shows 403

Any solution as same issue i am getting too


Increase docs max page width

Pull Request Test Coverage Report for Build 788784287

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

Totals

Change from base Build 777692000:
0.0%

Covered Lines:
286

Relevant Lines:
290

💛  - Coveralls


Upgrading to 1.9.2

We're playing around with nginx 1.9.2 since it has TCP load balancing. Not sure if you guys are interested, but if you were thinking of upgrading this could be a start.
We haven't look much at the change logs yet, but it all seemed to work fine with our local setup.
connects to #49

Thanks @tobalsgithub — will review the diff between 1.6.2 and 1.9.2 in the next couple days, then circle back to this PR.

Merging this. Thanks again! See also #54, and in particular 385db4d. The stream module, necessary for TCP proxying, does not come pre-loaded in NGiNX 1.9.2.


Discussion: should we rework or remove unsafeHTML and unsafeSVG

Opening an issue to cover past discussion on this topic — work has already begun in #213 — essentially:

unsafeHTML and unsafeSVG are necessary for developers who prefer to avoid imperative DOM manipulation
it's not necessary to avoid imperative DOM manipulation
the convenience of injecting unsafe markup into an otherwise safe template is debatable
in our experience unsafeSVG has never been necessary (because unsafeHTML can accomplish the same behavior when <svg></svg> wraps the content)

Thus if we remove unsafe entirely we will (potentially inadvertently) encourage unsafe behavior unknowingly (if innerHTML were called unsafeCrazyNativeFeature we would perhaps feel differently). At the same time, the project philosophy states:

Presume adopters are browser experts already (stay out of their way)

Which could be interpreted as "stay out of my way, I know innerHTML is unsafe!" -or- "stay out of my way, I want to conveniently bind unsafe markup in my declarative template!"
The philosophy also states:

Implement a minimal set of generalized functionality

... and it could be argued that unsafe is not a "minimal" feature. Consider the following:
<textarea id="example1">${unsafe(mySampleCode)}</textarea>

This does not actually touch on the common concern when injecting unsafe HTML — the browser will not actually execute the code within the textarea element — instead it will display the HTML as a string. This snippet is exactly identical:
<textarea id="example2">${mySampleCode}</textarea>

A more sinister example is:

${unsafe(mySampleCode)}

If we had not used the unsafe directive, the template engine would simply print the markup as as string (by assigning div#example3.textContent = mySampleCode — but this is not what we want. We actually want to allow the browser to expand the string and generate DOM (even if the string contains  because presumably we are confident that other sanitization has already occurred upstream. (Note: do not make that assumption, it is unsafe LOL)
So the conundrum in a nutshell:

get out of the way of experts who want to do presumably unsafe things
avoid implementing this thing at all; let the experts do the unsafe thing easily but not declaratively (e.g. facilitate getting a pointer to a DOM injection point where the developer can do something unsafe like div#example4.innerHTML = ''

Open for discussion...

Rationale for removing: After seven years and 10,000 commits across 12 engineers there are still only two places where we use unsafeHTML today:

rendering code in app-code
rendering markdown in markdown-renderer

Both rendering calls are with DOMPurify.sanitize in the loop. It would be trivial to rework these integrations to no longer rely on unsafeHTML

Current exemplary case:
// ...

static template(html, { unsafe }) {
  return ({ markdownResult }) => html`<div id="container">${unsafe(markdownResult)}</div>`;
}

// ...

Would become (today):
// ...

static template(html) {
  return () => html`<div id="container"></div>`;
}

render() {
  super.render();
  const target = this.shadowRoot.getElementById('container');
  target?.innerHTML = this.internal.markdownResult ?? '';
}

// ...

Another method which is a bit more idiomatic (today):
// ...

static get properties() {
 return {
   markdownResult: {
     type: String,
     compute: // ...
     default: '',
     observe: (host, value) => {
       const target = host.shadowRoot.getElementById('container');
       target?.innerHTML = value;
     },
   },
 };
}

static template(html) {
  return () => html`<div id="container"></div>`;
}

// ...

Maybe the way to go is that we allow for binding of documentFragment nodes within a template context


[FR] Add the ability to calculate (linear) depreciation of stock items

Problem
It would be nice to have the ability to calculate depreciation of a stock item based on the purchase date and the initial cost of purchase.
This feature is usually found in asset management systems and would make InvenTree even more versatile as both an inventory management and an asset management system.
Suggested solution
Add an extra fields to the stock item with

purchase price (already exists, although it is not clear whether this price is for a SINGLE item or ALL items in the stock)
purchase currency (already exists, although very few currencies are available)
purchase date
purchase order/invoice (does not appear to be possible to edit)
required depreciation (eg. 5 year/60 months)
fully depreciated (based on purchase date and depreciation)
current value, calculated based on the above fields.

Add a menu where a depreciation report can be generated for selected stock items. This report should contain the current value of all purchases, based on their purchase date, cost and the depreciation.

Examples of other systems
Asset mgmt. systems such as SnipeIT can do this but unfortunately, this system lacks severely in other areas.
Do you want to develop this?
Yes, if pointed in the right direction on where/how to add the functionality.

Hi there @tehkillerbee
Cool idea 👍
There is a lot stuff that is requested in pricing. With the limited number of devs we have it might take a while till we get to it: https://github.com/inventree/InvenTree/issues/1656

@tehkillerbee very interesting idea! I'm wondering whether this might work well as a plugin? In any case this will need to wait for the outstanding pricing issues but we can certainly discuss implementation ideas

@SchrodingersGat might work well as an AppMixin

@matmair @SchrodingersGat Good to hear you like the suggestion. A plugin would work fine for us to display the depreciation, although I assume the necessary fields must be added to the database somehow?

@tehkillerbee you could keep a completely separate set of database tables, to ensure that the core database fields are kept clean. Then some logic to map a "depreciation" to a particular stock item.

I might add that metadata fields might also work. For a lookup a separate db might help.

I also realised that it is possible to add custom part parameter fields. Perhaps this could be a way to add the necessary fields for purchase date/value/currency/order etc. although I guess the fields must be added manually. Are these the metadata fields you refer to @matmair?
@SchrodingersGat I did consider just using a separate database for this but I figured the user experience would be better if it was integrated in InvenTree frontend, either directly or as a plugin. It would also make it easier to maintain, as the necessary data (purchase date, cost etc.) could easily be entered through the InvenTree interface.
I could imagine the depreciation table could be generated/displayed using a plugin but it would have to get the necessary data (purchase date, value) from somewhere. So being able to add these fields easily for each part would probably be necessary as a starting point.
When adding part parameter fields, do they behave in a similar way as "normal" part parameters such as description, IPN, cost etc.? Can they be accessed - eg. from a plugin in the same way?

Part parameters are something else. You can access .metadata dict fields on all principal models (from a plugin) to save data there.

@tehkillerbee please indicate if you are still interested in this, otherwise we'll close it out.

@SchrodingersGat It would be a very nice feature to have, that's for sure, but I understand that there are some issues such as pricing that need to be handled first.

This would still be a very useful feature.

One way we could get started would be to add the following fields to a stock item and edit them manually

purchase date
purchase price, currency (already exists, although with limited currencies available)

As I understand, purchase price and currency for a stock item are usually populated automatically when creating a purchase order, correct? If so, it would make sense to add purchase date and also update it automatically when creating a purchase order.
All calculation related to depreciation can then be handled by a separate plugin, where we put in the

Input: required depreciation (eg. 5 year/60 months)
Output: fully depreciated (based on purchase date and depreciation)
Output: current value, calculated based on the above fields.

Purchase "date" is most like the creation date of the stock item itself, if it was received via a purchase order. Handling the actual depreciation via a plugin is a good idea.

@SchrodingersGat That makes sense. However, we would like to be able to edit the creation date (just like purchase cost), without having to create purchase orders for existing stock items. Is this possible somehow?
Otherwise, we will have to use a different field to specify the original purchase date.

@tehkillerbee the creation date is set on creation of the database entry and it is assumed that that is consistent. Changing this seem like a bad idea, do you have a concrete example why this needs to be editable?

First of all, I would like to say that I have not properly tested the purchase order workflow for our existing stock items, so I apologize if I do not know everything that is possible with it. Generally, I think the workflow makes sense good for a pure components, after all this is what InvenTree is designed for.
But eg. for unique assets, we will have to create individual purchase orders for each unique stock item - just to be able to add a purchase date/cost/etc. to it. That seems like a lot of extra steps.
Also, if we are supposed to use purchase orders for all stock items, it seems counterintuitive that we can still edit some of the fields manually (purchase cost, purchase currency etc.).  Instead, if we add a field such as purchase date and purchase invoice/reference as a field that can be edited for each stock item, it would give a more consistent user experience. Then you can either use the purchase order workflow or enter the information manually if necessary.
My idea is that each stock item should contain the purchase date, purchase cost and reference (and other fields that can also be updated by the purchase order). But instead of relying only on the purchase order workflow to populate these fields, the information should also be possible to enter/update manually by the user.

Changing how the creation date works will fundamentally break plugins - so we should have a good reason that can not be covered by adding metadata in a plugin for one specific use-case.

I agree, I would say it should be a separate field in that case. Similar to how we can set Expiry Date for a stock item

I ended up using the "batch" field as a workaround to enter the purchase dates manually. This works fine - since we can enter anything we want in this field and we can easily transfer our existing purchase dates over. The purchase cost has been entered in the appropriate field.
To generate the output report, I used the Python API to export the data in a format suitable for excel. (similar to this issue https://github.com/inventree/InvenTree/issues/2507) I must say, this worked rather well - since the API was very well thought out. Main challenge was figuring out how to get the location of stock that belong to a customer and/or a different stock item.
Below is the quick&dirty(TM) script
from inventree.api import InvenTreeAPI
from inventree.stock import StockLocation, StockItem
from inventree.part import Part
from inventree.company import Company

import xlsxwriter

from datetime import datetime, date

# This is a sample Python script.
SERVER_ADDRESS = 'http://AAA.BBB.CCC.DDD:1337'
MY_USERNAME = '<enter your user here>'
MY_PASSWORD = '<enter your password here>'

# Setup file output parameters
today = date.today()
date = today.strftime("%d-%m-%Y")

def do_inventree_report():
    api = InvenTreeAPI(SERVER_ADDRESS, username=MY_USERNAME, password=MY_PASSWORD)
    items = StockItem.list(api)

    workbook = xlsxwriter.Workbook('InventoryReport_{}.xlsx'.format(date))
    worksheet = workbook.add_worksheet()
    workbook1 = xlsxwriter.Workbook('InventoryReportExcluded_{}.xlsx'.format(date))
    worksheet1 = workbook1.add_worksheet()

    # Write header
    my_list = ["IPN", "Serial", "Name", "Description", "Quantity", "Status", "Location", "PurchaseDate", "PurchasePrice", "PurchasePriceCurrency"]
    worksheet.write_row(0, 0, my_list)

    my_list = ["IPN", "Serial", "Name", "Description", "Quantity", "Status", "Location", "PurchaseDate",
               "PurchasePrice", "PurchasePriceCurrency"]
    worksheet1.write_row(0, 0, my_list)

    items_without_price = 0
    total = 0
    stock_row = 1
    stock_excl_row = 1
    for item in items:
        try:
            part = item.getPart()
        except:
            continue

        # skip all items that does not have a purchase price set
        if item.purchase_price:
            # skip items with a purchase cost of less than 100 (Irrespective of currency)
            if float(item.purchase_price) <= 100:
                continue

            # get full location as string, attempt to get indirect location from items installed in other hardware
            locationStr = "None"
            location = None
            customer = None
            serial = None

            try:
                if item.belongs_to:
                    # Determine location from assign
                    itemA = StockItem(api, pk=item.belongs_to)

                    if itemA.serial:
                        serial = itemA.serial
                    elif itemA.customer:
                        # Determine location from customer
                        customer = Company(api, itemA.customer)
                        location = None
                    elif itemA.location:
                        location = itemA.getLocation()
                    else:
                        location = None
                elif item.customer:
                    customer = Company(api, item.customer)
                else:
                    location = item.getLocation()

                if location:
                    locationStr = location.pathstring
                elif customer:
                    locationStr = "Deployed: {}".format(customer.name)
                elif serial:
                    locationStr = "Assigned: {}".format(serial)
                else:
                    locationStr = "None"

            except:
                locationStr = "None"

            fields = [part.IPN, item.serial, part.name, part.description, item.quantity, item.status_text, locationStr,
                      item.batch, item.purchase_price, item.purchase_price_currency]
            print(*fields, sep=", ")
            worksheet.write_row(stock_row, 0, fields)
            stock_row += 1
        else:
            fields = [part.IPN, item.serial, part.name, part.description, item.quantity, item.status_text, "Location",
                      item.batch, item.purchase_price, item.purchase_price_currency]
            worksheet1.write_row(stock_excl_row, 0, fields)
            #print(*fields, sep=", ")
            stock_excl_row += 1
            items_without_price += 1
        total += 1
    workbook.close()
    workbook1.close()

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    do_inventree_report()

@tehkillerbee thank you for the example. We need some way to share those better in a central place.
I know I am a bit late but there might actually be a better/more future safe way to save the information. There are the methods getMetadata and setMetadata which can be used to save arbitrary data to the model and an extra field.
https://github.com/inventree/inventree-python/blob/d13d8af985fa9d5321ddd6f85c693ded2d6c5d2b/inventree/base.py#L432-L433
https://github.com/inventree/inventree-python/blob/d13d8af985fa9d5321ddd6f85c693ded2d6c5d2b/inventree/base.py#L446-L452
I opened an issue regarding the docs https://github.com/inventree/inventree-docs/issues/425, there is also a PR to add metadata to more models #4202

@matmair That is a good idea too. This script was largely based on an existing script I found by accident. But it was easy to adapt so I could export only the required fields from the inventory. Very nice and easy to set up.
Regarding metadata, as I understand, they can only be accessed through the API, or?
In our case, some users prefer a more graphical way to enter values (i.e. the webinterface), so that was the reason why I used the batch field to enter the dates.

You can show them with a few LoC. My concern mainly is that we will start doing something more intelligent with the batch field sometime and break your workflow by assuming that there is only batch info there.

@matmair Also in the web interface? I will have to try that then.
No worries, using the batch field was a hack in any case. I think I can make a quick python script that can move the batch field contents, as soon as there is somewhere else I can put them. We needed to finish the inventory, so I had to find a quick solution.

Closing this issue, as it has been solved using the Python API.


Internal server error when execute wrong blueprint

Description
Execute any blueprint with wrong paramter will produce an internal server error.
Example
Execute the following blueprint which has 'locations' instead of "location"

Actual Result

Expected result
System should verify the blueprint and handle wrong parameters.
Cockpit version
JumpScale
Core: 8.1.0rc2-4-g776daea
Portal: 8.1.0rc2-1-gb748c00

JSCockpit
JSCockpit: 8.1.0rc2

Repo
8.1.0

Tested on 8.1.1

This blueprint shouldn't be accepted in the first place

u want to implement client side checks that is really not a good idea

trying to reproduce blocked on https://github.com/Jumpscale/jscockpit/issues/364 @ashraffouda

not working on that issue right now

You should get errors like this.

Acceptance of a blueprint is a totally different thing in 8.1.1 (as validation is done during service creation -for malicious manipulation of arguments- not during blueprint execution).

Verified on 8.1.1


Custom filenames for Bluesky scans

When using the scan_1d function, bluesky overwrites the user-specified filename in the IOC's HDF5 plugin with the scan's uid. Is it possible to get the scan to save images using a custom filename, instead of the scan's uid?

Hi @bsobhani , thanks for opening the issue.
Using a unique id as the filename (not actually the scans uid) is required for the use of databroker. So unfortunately we can not have it save a custom filename.
What we can do is that databroker can be used to export hdf5 files, after the fact, with any custom name. This reproduces the data in 2 files but does give you a file with any name you like. This new file will also contain all the meta-data saved into bluesky so that is a benefit of this solution.
If you would like to discuss this offline let me know, I would be happy to show you how to generate a hdf5 file from a databroker entry.
thanks again for the post.

Reopening to continue the discussion.
Of course you are right, @prjemian. This is a common request and a major sticking point. I think there are a couple concerns behind those requests that need to considered separately.
One is fear of data loss. If all the files have inscrutable names, what happens if the index is lost or corrupted? In a world where we're taking more and more data, human-readable filenames won't help you because there will be too many files for a human to sort through. We have to get machine-readable names right and then rely on that system. And of course, since the index is critical, we back it up!
Another is that most people are accustomed to using files, not APIs, access their data for processing, visualization, analysis. And some existing software requires certain file formats. As you know, we'd like to move people toward APIs and away from files, but that is a decades-long cultural change that cannot be forced as a step function. In the mean time, I believe we need to meet them where they are and let them discover the advantages of APIs when they encounter the need for them.
To address both concerns, our recommendation is that instruments who really want or need files set up callbacks on the RunEngine that export files or create soft-links when a run has completed. The "ground truth" files managed by databroker keep their UUID4 names, but the user can deal with files of any filetype and naming scheme they like. Since these files are derived artifacts, they can always be regenerated if naming preferences change.
As our "suitcase" project moves from a hairy prototype to a first-class component of the bluesky ecosystem, we'll have better tooling and more examples supporting this kind of workflow.
Do you think we are on the right path?

With such competing objectives, we need to try out our ideas and see
what becomes acceptable.
On 2018-11-01 2:07 PM, Dan Allan wrote:

Do you think we are on the right path?

Another callback approach, alternative to creating soft links, is to
create an index of the large files associated with the scan.  That makes
less assumptions about the filesystem being used.  Just an idea.

How would you like to see such an index implemented? Of course there already is an index (databroker!) so it's down to a question of what redundant forms to copy that information into for user reassurance/accessibility.

I like this slide from the webinar about using interfaces:


Allow Users To Review Exercise Changes Prior To Approval

Currently when changes are made to an exercise the approver has no way to view these changes.
Add a section like the screenshot below (using GOVUK inset) to the Exercise Overview page above the buttons at the bottom:

The changes come from comparing a vacancy with its exercise.
The vacancy has a subset of fields in the exercise so only compare against fields in the vacancy vs the exercise.
The exercise has the new changes.
Ignore the 'state' and fields beginning with underscore.
When outputting the (changed) field be sure to convert eg 'retirementAge' to 'Retirement Age'.

This is currently blocked by:
https://github.com/jac-uk/admin/issues/2073

Need a nodeScript to update existing data

The nodescript has already been run on develop but needs to be run on staging and production.
See: https://github.com/jac-uk/digital-platform/pull/924


Add support for an include_stopped parameter to BatchApexWait

Critical Changes
Changes

Modify the batch_apex_wait task to include Aborted and Failed jobs by default

Issues Closed

I don't think the failing test is your fault. Don't worry about that.
But I wanted to discuss the include_stopped parameter. What are the use-cases where you would want it to be false? If its false the CCI process will presumably wait forever even though it does not have to. Also, shouldn't we also handle the Failed state?
https://help.salesforce.com/articleView?id=code_apex_job.htm&type=5

@prescod Good point. I had though that Completed might include a failed job, and though it would if only one batch iteration failed out of more than one. However, if there is a failure of 1 out of 1 batch iteration, or the job fails with an initial query timeout then it would be listed as "Failed".
I think your other question is why not always include Failed and Aborted in the initial check. Honestly I'm not really sure. I was mainly avoiding modifying the default behavior of the task, however it's feasible to say that maybe this should always be the case. And if so, then maybe the options would be there to disable including those particular statuses in cases there really is a flow that needs to check explicitly for "Completed".

include_stopped (or include_aborted): Check for Status="Aborted" (default to true)
`include_failed': Check for Status="Failed" (default to true)

I meant to do this as a pull request to your pull request but I pushed before I branched. Didn't seem worth undoing.
In the ProdRelEng discussion we decided to try to apply these philosophies:

noisy failure are better than quiet ones
only add options when someone really describes why they need them ("YAGNI")

The backwards compatible behaviour is to wait forever for stopped jobs, which is basically a bug. So I presume that nobody has really run into this issue in the past. Still, it's better to fix the bug and not hang forever. YAGNI is not an excuse for bugs.
But since the backwards compatible behaviour is a bug we should think through what we would have done if we had implemented it completely 2.5 years ago. And I think that throwing exceptions is how we would have done it.
If the Flow-writer wants the flow to continue even in the face of the aborted or failed job, they can do so with the feature called ignore_failure on the flow steps.
Also, it may not have been clear from the code but a failed batch will not generate a failed job and that's part of why we've probably(?) never run into this before. Failed batches are common but failed jobs seem quite rare.

@prescod Thanks for the cleanup on this. Much appreciated. Hopefully the next PR on a field value wait state will be in better shape.


ccxt

Would be cool if ccxt was used, this way you could support most, if not all, exchanges and pair at once.

Great suggestion. I don't currently have time to devote to open source projects at the moment but I'd love to see if one of my friends can help with this


Simple Blocksquotes CSS Style

I really enjoy the minimalistic nature of the theme but realized that there is no actual blockquotes styling, instead relying on the browser to automatically indent it. The browser doesn't auto-italicize the quotes either which is kind of annoying.
While indentation is good I implemented a CSS style that is inline with the simple nature of the theme that highlights blockquotes better. Works in both dark & light modes. See images below:

~

Thanks for the PR, this looks good!


search suggestion w/o price

here's first nft, clearly listed with price (happening on /snek as well):

:wave

👋

while at it, can we also check this scroll bar? or is it again only windows thing?

while at it, can we also check this scroll bar? or is it again only windows thing?

OKI, Will also take a look


HIstogram scaling is not correct

Version from 8/9/2023
Histogram is much faster now but the scaling is off.  It looks like values above about 50% brightfness go off the screen on the right side.

This is about 50% brightness and the histogram is showing it all of the way at the max.
The histogram itself also looks like the vertical lines are double wide, maybe this is the problem?

Still present on 9/8/2023 build


repository status? Vialer?

It looks like you are currently offering a "Vialer" extension on the Chrome Web Store, which seems to be based on this extension but has been updated more recently and is at version 2.2.1, while this repository is stuck at version 1.4.10.
Have you gone closed-source with the plugin and is this repository no longer used? Is the Vialer source code available somewhere else?

Looks like https://github.com/vialer/vialer-js is related (based on this post), but that's discontinued as well?

Aha, found it: https://github.com/vialer/vialer-clicktodial
Maybe mention this somewhere in the readme?

You are right, this repo and it's firefox counterpart are from a day and age where you could not use the same codebase for both browsers. This code is obsolete and the repository is no longer relevant. I'll accept your pull request until we have decided what to do with this repository. Thanks for pointing it out!


Not able to set the boolean arg flag to "false" when it has default value set to "true" in Acornfile.

acorn version v0.8.0-80-g635ea0a6+635ea0a6
Steps to reproduce the problem:

Deploy app using the following Acornfile by passing "false" to newApp - acorn run -n mytest . --newApp false --newtext nnupdate --oldtext ooupdate

Acornfile used:
args: {
	newApp:  true
	oldtext: "old"
	newtext: "new"
}
containers: {
	mywebnew: {
	image: "nginx"
	ports: publish: "80/http"
	files: {
		"/usr/share/nginx/html/index.html": std.ifelse(args.newApp, args.newtext, args.oldtext)
	}
}
}

This results in newApp being set to true
Spec for the app shows newApp set to true even when "false" was passed.
            "spec": {
                "image": "157b305f5477547cda05c29f2ff1758ac1029c9e786bcd2f16546dee15a278df",
                "deployArgs": {
                    "newApp": true,
                    "newtext": "nnupdate",
                    "oldtext": "ooupdate"
                }
            },

Possibly related to type not shown for boolean args in acorn help
acorn run . --help

Volumes:   <none>
Secrets:   <none>
Containers: mywebnew
Ports:     mywebnew:80/http

      --newApp
      --newtext string
      --oldtext string
      --profile strings   Available profiles ()

How is false pased? I feel like this is missing a step.

@cjellick I am able to set boolean flag to "true" when it is passed with "=" like --newApp=false in the arg list.
This issue is seen only when it is passed with out "=" like --newApp false in the arg list.
In the example provided in the above issue ,
acorn run -n mytest -f Acornfilebool -- --newApp=false --newtext nnupdate --oldtext ooupdate works as expected.
The issue is seen only when we launch the app as follows without "=" for the boolean args
acorn run -n mytest -f Acornfilebool -- --newApp false --newtext nnupdate --oldtext ooupdate

Not a blocker. Moving to low

This is a limitation of the flag parsing lib we use. See: https://github.com/spf13/cobra/issues/613
Not super high priority, but im tempted to go as far a dropping use of the actual bool flag and have our own string-based bool-ish flag that behaves more predictably


Remove partner assessments, add conditional questions

Remove old-style partner assessments, and add a maintenance command to migrate these to periodic assessments. Also introduce the possibility to add conditions to assessment questions (both periodic and with recurrence: once).
Closes NCI-Agency/anet#3339
User changes

Old-style partner assessments (as shown in the Notes side-panel) will be migrated to periodic assessments (as shown on the assessed person's page). It is no longer possible to create partner assessments, these are now obsolete.

Super User changes

None.

Admin changes

None.

System admin changes
A maintenance command has been added to migrate old-style partner assessments to periodic assessments for people. It can be run from the command-line like so:
anet.bat maintenance --migratePartnerAssessments anet.yml

Details about the results of the migration are written to the log; check those results to see if there were any problems, like partner assessments that couldn't be migrated for some reason.
Before running the migration, the ANET dictionary needs to updated. If it had an entry for partner assessments like this:
  principal:
    person:
      assessment:
        questions:
          - id: test1
            test<EMAIL_ADDRESS>&& /^(Z|z)/.test(@.identificationCode))]
            label: Test question 1
            choice:
              - value: "1"
                label: one
                color: '#c2ffb3'
              - value: "2"
                label: two
                color: '#ffe396'
              - value: "3"
                label: three
                color: '#ff8279'
          - id: test2
            test<EMAIL_ADDRESS>&& /^(Z|z)/.test(@.identificationCode))]
            label: Test question 2
            choice:
              - value: "3"
                label: three
                color: '#ff8279'
              - value: "4"
                label: four
                color: '#ffe396'
              - value: "5"
                label: five
                color: '#c2ffb3'
          - id: test3
            test<EMAIL_ADDRESS>&& /^(Z|z)/.test(@.identificationCode))]
            label: Test question 3
            choice:
              - value: "1"
                label: one
                color: '#c2ffb3'
              - value: "2"
                label: two
                color: '#ff8279'
              - value: "3"
                label: three
                color: '#ff8279'

it needs to be moved and edited like so:
  principal:
    person:
      assessments:
        - recurrence: quarterly
          questions:
            test1:
              test: $.subject.position.organization.[?(@property == "identificationCode" && @.match(/^Z/i))]
              type: enum
              label: Test question 1
              choices:
                "1":
                  label: one
                  color: '#c2ffb3'
                "2":
                  label: two
                  color: '#ffe396'
                "3":
                  label: three
                  color: '#ff8279'
            test2:
              test: $.subject.position.organization.[?(@property == "identificationCode" && @.match(/^Z/i))]
              type: enum
              label: Test question 2
              choices:
                "3":
                  label: three
                  color: '#ff8279'
                "4":
                  label: four
                  color: '#ffe396'
                "5":
                  label: five
                  color: '#c2ffb3'
            test3:
              test: $.subject.position.organization.[?(@property == "identificationCode" && @.match(/^Z/i))]
              type: enum
              label: Test question 3
              choices:
                "1":
                  label: one
                  color: '#c2ffb3'
                "2":
                  label: two
                  color: '#ff8279'
                "3":
                  label: three
                  color: '#ff8279'
            text:
              type: special_field
              label: Text
              widget: richTextEditor
              style:
                height: 100px

Set the recurrence: to whatever is required (in the example above it's set to quarterly).
The syntax for the new assessments is slightly different, e.g.:
        questions:
          - id: test1

should become:
          questions:
            test1:

and:
            choice:
              - value: "1"

should become:
              choices:
                "1":

Pay attention to the test: conditions, these have changed slightly too; the fields of the subject being assessed are now under $.subject. And since the old-style partner assessments always contained a text field, do not forget to add that last text: entry under the questions: (note: if previously all questions had the same test: condition, you might want to add that test: here too).
Regarding the test: conditions, these can also be applied to so-called instant assessments, i.e. assessments with recurrence: once and relatedObjectType: report. The fields of the subject being assessed (e.g. person or task) are under $.subject, the fields of the related object (e.g. report) are under $.relatedObject. An example of such an instant assessment definition with conditions is:
  principal:
    person:
      assessments:
        - recurrence: once
          relatedObjectType: report
          questions:
            question1:
              type: enum
              label: Attendee involvement
              choices:
                "1":
                  label: low
                  color: '#c2ffb3'
                "2":
                  label: medium
                  color: '#ffe396'
                "3":
                  label: high
                  color: '#ff8279'
            question2:
              test: $.subject.position.organization.[?(@property == "identificationCode" && @.match(/^P/i))]
              type: enumset
              label: Attendee from P org
              choices:
                yes:
                  label: P
                  color: '#ff0000'
            question3:
              test: $.subject.position.organization.[?(@property == "identificationCode" && @.match(/^Z/i))]
              type: enumset
              label: Attendee from Z org
              choices:
                yes:
                  label: Z
                  color: '#00ff00'
            question4:
              test: $.relatedObject.[?(@property == "atmosphere" && @ == "POSITIVE")]
              type: enumset
              label: Report had POSITIVE atmosphere
              choices:
                yes:
                  label: 👍
                  color: '#0000ff'

Here, question1 will be shown for all attending principals, question2 only for those whose organization code starts with a P (or a lower-case p), question3  only for those whose organization code starts with a Z (or a lower-case z), and question4 only if the report had a POSITIVE atmosphere.

[x] anet.yml or anet-dictionary.yml needs change
[x] db needs migration
[ ] documentation has changed
[ ] graphql schema has changed

Checklist

[x] Described the user behavior in PR body
[x] Referenced/updated all related issues
[x] commits follow a repo#issue: Title title format and these 7 rules
[x] commits have a clean history, otherwise PR may be squash-merged
[x] Added and/or updated unit tests
[x] Added and/or updated e2e tests
[x] Added and/or updated data migrations
[ ] Updated documentation
[x] Resolved all build errors and warnings
[ ] Opened debt issues for anything not resolved here

Needs backend review as well


Slightly improved version of Transient storage with view functions

Hi @adhusson ,
very nice article you wrote. I thought I would point out that the Transient storage with view functions could be improved. It saves 95% of gas on average in the test cases. The new version is storing the number in binary format. Now it "just" costs ~600k gas to write and read a uint256. :wink:
Anyway, having fun with EVM as you said.
Have a nice day.

This is great! Wish I thought of that :)

Added a note on update. Thanks!


version 1.0

Your plugin is not compatible any longer with the current version of VCV Rack. Are you planning on updating it and releasing a new version?

hi Gilbert, yes, i am planning to do a new version, but i havent the time right now :)
thanks for your interest... i would like to know how you are using it within the 0.6.2 release of vcv ? if you dont mind...

Great, thanks for taking a look at it!

thanks for your interest... i would like to know how you are using it

In the past I used to write electronic pieces using Pure Data mainly for 4- and 8-channel systems. It's been some time since I last did any multichannel serious work, but this is one of those 'nice-to-have' set of modules, particularly the quad output. Of course I could simply use two regular 2-channel outputs and route them through Jack, but it makes the patch clearer to have it as a single one. Also, I am considering to use Rack for a class of computer music and this might come in handy if any student wants to try using more than 2 channels.

Ah, and of course the quad mixer makes it much easier to pan things around the quad space.

yes, you are right... i m also planning to finish my 16 track sequencer to be able to control the matrix, using automations patterns, what do you think about it ?
i am also using VCv to teach people ;) great to ear that you are doing the same

That 16-track sequencer with quad output sounds like a great addition to VCV, I'd definitely be interested in it. Thanks again for taking a look at this and good luck with your classes too!

There has been a user going on the VCV community forum (netboy3 is his username) who has in the past been happy to help in the migration of plugins to v1.0 compatibility in VCV. Would you like a hand getting your plugin updated to the current version if he is keen and able?


Screenshots no longer available

The problem
I no longer get the screenshots upon failure ever since I upgraded from Selenide 2.17 to Selenide 4.12.
For the longest time, I had a very old Selenide code for reasons that are isolated to my setup. Finally I found a way to work around the issue hindering my upgrade. So I took a big leap and upgraded from Selenide 2.17 to 4.12. I was really excited considering I have now new api's at my disposal. I must say my expectation has not been met.

Practically every failure has failed without a screenshot that I am used to which makes it difficult to see what was on the screen upon failure
I get frequently now NotFoundElement Failures. Upon update i noticed quite some deprecated functions which I updated to most suitable apis. Now It seems my tests is a bit unstable which I am currently investigation to find out the root cause. I use a lot of should(Condition.appear, 2500).click() type calls around my code to ensure the elements have enough time to be rendered before the click.

Tell us about your environment
Selenide 4.12.2
Firefox 61.0.1
Selenium-firefox-driver 3.13.0
Selenium 3.13.0
Windows 10 Pro
Fitnesse-20180127
Code To Reproduce Issue [ Good To Have ]
Please remember that with sample code it's easier to reproduce the bug.
To reproduce:
$Open any page of a given site
$Click on a element that is not there
It should throw a ElementNotFoundException and suppose to show a screenshot path to where the page is stored.

This is a very basic functionality that works perfectly. And without your code example, it is impossible to see what is the problem you're experiencing.

Stacktrace is impossible to read, it is uploaded as a screenshot that doesn't appear in full size. Place it as a plain text here.
Also, Condition.appear is deprecated. Better to use Condition.visible. And what is the policy_num? Do you define this variable?
I tried to reproduce your issue with the following test:
  @Test
  public void scrapePolicyNumber(){
    open("https://www.google.com/");
    $("#PolicySummary_PolicyNumber span").shouldBe(appear).getText();
  }

As expected - it failed, I get a NoSuchElementException and screenshot was created. You can try the same test on your side and see that the result will be the same.

@plagov Thank you for all your efforts. I am not so sure how the stacktrace will be helpful to you but here it is. It should be plainly seen that there is no screenshot shown here. There might be something I am missing but its not yet apparent to me. I assume that you are staging similar environment as I noted above. Thanks again.
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#PolicySummary_PolicyNumber span"}
(Session info: chrome=68.0.3440.106)
(Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:24:21.231Z'
System info: host: 'WCD00065', ip: '<IP_ADDRESS>', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.41.578737 (49da6702b16031..., userDataDir: C:\Users\AFAMOK~1\AppData\L...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:62067}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 68.0.3440.106, webStorageEnabled: true}
Session ID: 8bf44916b4dae5a2a81d33ecf1fb6765
*** Element info: {Using=css selector, value=#PolicySummary_PolicyNumber span}
at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:322)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:416)
at org.openqa.selenium.By$ByCssSelector.findElement(By.java:431)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:314)
at com.codeborne.selenide.impl.WebElementSelector.findElement(WebElementSelector.java:29)
at com.codeborne.selenide.impl.ElementFinder.getWebElement(ElementFinder.java:56)
at com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:44)
at com.codeborne.selenide.commands.Should.should(Should.java:35)
at com.codeborne.selenide.commands.Should.execute(Should.java:29)
at com.codeborne.selenide.commands.Should.execute(Should.java:12)
at com.codeborne.selenide.commands.Commands.execute(Commands.java:144)
at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:90)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:65)
at com.sun.proxy.$Proxy0.shouldBe(Unknown Source)
at cse.regress.features.BORFixture.scrapePolicyNumber(BORFixture.java:190)
at cse.regress.features.BORFixture.startBrokerOfRecord(BORFixture.java:46)
at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at fitlibrary.closure.MethodClosure.invoke(MethodClosure.java:49)
at fitlibrary.closure.MethodClosure.invokeTyped(MethodClosure.java:35)
at fitlibrary.closure.CalledMethodTarget.invokeTyped(CalledMethodTarget.java:83)
at fitlibrary.closure.CalledMethodTarget.invokeTyped(CalledMethodTarget.java:103)
at fitlibrary.traverse.workflow.caller.DoActionCaller.run(DoActionCaller.java:40)
at fitlibrary.traverse.workflow.DispatchRowInFlow.pickAndRunValidCaller(DispatchRowInFlow.java:98)
at fitlibrary.traverse.workflow.DispatchRowInFlow.interpretRow(DispatchRowInFlow.java:61)
at fitlibrary.traverse.workflow.DoTraverse.interpretRowBeforeWrapping(DoTraverse.java:99)
at fitlibrary.traverse.workflow.DoTraverse.interpretRow(DoTraverse.java:96)
at fitlibrary.flow.DoFlowOnTable.runTable(DoFlowOnTable.java:80)
at fitlibrary.flow.DoFlowOnTable.runTable(DoFlowOnTable.java:56)
at fitlibrary.flow.DoFlow.runTable(DoFlow.java:104)
at fitlibrary.flow.DoFlow.runSingleTable(DoFlow.java:89)
at fitlibrary.flow.DoFlowWithExtraTableAddedWhenNeeded.runStorytest(DoFlowWithExtraTableAddedWhenNeeded.java:33)
at fitlibrary.suite.BatchFitLibrary.doTables(BatchFitLibrary.java:92)
at fitlibrary.suite.BatchFitLibrary.doStorytest(BatchFitLibrary.java:50)
at fitlibrary.suite.BatchFitLibrary.doTables(BatchFitLibrary.java:107)
at fitlibrary.suite.FitLibraryServer.doTables(FitLibraryServer.java:36)
at fitlibrary.suite.FitLibraryServer.doTables(FitLibraryServer.java:28)
at fit.FitServerBridge.process(FitServerBridge.java:76)
at fit.FitServerBridge.run(FitServerBridge.java:60)
at fitlibrary.suite.FitLibraryServer.main(FitLibraryServer.java:54)

Check also your Selenide configurations - class with configurations or command line arguments. If your test spawns Chrome, while Selenide by default uses Firefox, that means that somewhere in your project you define configurations.

I have checked my selenide configurations. In no place did I explicitly turn off screenshots. I make few setProperty calls like below:
System.setProperty("selenide.browser", browser.equalsIgnoreCase("chrome") ? "chrome" : "firefox");
Before calling the open(url)
Just now, in an entirely different test within the same suite sharing the same setup and codebase, now I see screenshot included. So now am perplexed!
Element should not visible {By.className: error_content}
Element: '
ATTENTION!
Quote has not been saved. Please select a customer before binding the quote.
'
Screenshot: file:/C:/workspace2/CSERegression_Projects/build/reports/tests/1538083392498.0.png
Page source: file:/C:/workspace2/CSERegression_Projects/build/reports/tests/1538083392498.0.html
Timeout: 4 s.
at com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:63)
at com.codeborne.selenide.commands.ShouldNot.shouldNot(ShouldNot.java:36)
at com.codeborne.selenide.commands.ShouldNot.execute(ShouldNot.java:29)
at com.codeborne.selenide.commands.ShouldNot.execute(ShouldNot.java:12)
at com.codeborne.selenide.commands.Commands.execute(Commands.java:144)
at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:90)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:65)
at com.sun.proxy.$Proxy2.shouldNot(Unknown Source)
at cse.prod.suite.spinn.smoke.base.comm.quote.ca.auto.AutoPolicy.fillOutForm(AutoPolicy.java:375)
at cse.prod.suite.spinn.smoke.base.comm.quote.ca.auto.AutoPolicyNXG.fillAutoPolicyTabInfo(AutoPolicyNXG.java:128)
at cse.prod.suite.spinn.smoke.base.LegacyEntry.fillTabInfo(LegacyEntry.java:128)
at cse.prod.suite.spinn.smoke.fixtures.SpinnFixtures.fillTab(SpinnFixtures.java:347)
at cse.prod.suite.spinn.smoke.fixtures.SpinnFixtures.userCanFillOutTabInformation(SpinnFixtures.java:322)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at fitlibrary.closure.MethodClosure.invoke(MethodClosure.java:49)
at fitlibrary.closure.MethodClosure.invokeTyped(MethodClosure.java:35)
at fitlibrary.closure.CalledMethodTarget.invokeTyped(CalledMethodTarget.java:83)
at fitlibrary.closure.CalledMethodTarget.invokeTyped(CalledMethodTarget.java:103)
at fitlibrary.traverse.workflow.caller.DoActionCaller.run(DoActionCaller.java:40)
at fitlibrary.traverse.workflow.DispatchRowInFlow.pickAndRunValidCaller(DispatchRowInFlow.java:98)
at fitlibrary.traverse.workflow.DispatchRowInFlow.interpretRow(DispatchRowInFlow.java:61)
at fitlibrary.traverse.workflow.DoTraverse.interpretRowBeforeWrapping(DoTraverse.java:99)
at fitlibrary.traverse.workflow.DoTraverse.interpretRow(DoTraverse.java:96)
at fitlibrary.flow.DoFlowOnTable.runTable(DoFlowOnTable.java:80)
at fitlibrary.flow.DoFlowOnTable.runTable(DoFlowOnTable.java:56)
at fitlibrary.flow.DoFlow.runTable(DoFlow.java:104)
at fitlibrary.flow.DoFlow.runSingleTable(DoFlow.java:89)
at fitlibrary.flow.DoFlowWithExtraTableAddedWhenNeeded.runStorytest(DoFlowWithExtraTableAddedWhenNeeded.java:33)
at fitlibrary.suite.BatchFitLibrary.doTables(BatchFitLibrary.java:92)
at fitlibrary.suite.BatchFitLibrary.doStorytest(BatchFitLibrary.java:50)
at fitlibrary.suite.BatchFitLibrary.doTables(BatchFitLibrary.java:107)
at fitlibrary.suite.FitLibraryServer.doTables(FitLibraryServer.java:36)
at fitlibrary.suite.FitLibraryServer.doTables(FitLibraryServer.java:28)
at fit.FitServerBridge.process(FitServerBridge.java:76)
at fit.FitServerBridge.run(FitServerBridge.java:60)
at fitlibrary.suite.FitLibraryServer.main(FitLibraryServer.java:54)

Upon a closer observation between the two different stacktraces I have provided thus far, I noticed that the ones that terminate with codeborne code does actually generate screenshots but the ones that terminates either in Selenium library code or Java does not. I don't know if it makes any difference but wanted to call

Would there ever going to be an answer to my question?

@afamee Probably you are not copying the full stack trace.
I see only org.openqa.selenium.NoSuchElementException in your stack trace, but Selenide throws ElementNotFound exception which wraps the original NoSuchElementException and adds screenshot to it.
Look, this is how classical Selenide exception looks like. You probably copy only the part below "Caused by" phrase:
Element not found {#PolicySummary_PolicyNumber span}
Expected: visible

Screenshot: file:/Users/andrei/projects/selenide/statics/build/reports/tests/1540384401469.1.png
Page source: file:/Users/andrei/projects/selenide/statics/build/reports/tests/1540384401469.1.html
Timeout: 4 s.
Caused by: NoSuchElementException: Unable to locate element: #PolicySummary_PolicyNumber span
	at com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:34)

@afamee Probably you are not copying the full stack trace.
I see only org.openqa.selenium.NoSuchElementException in your stack trace, but Selenide throws ElementNotFound exception which wraps the original NoSuchElementException and adds screenshot to it.
Look, this is how classical Selenide exception looks like. You probably copy only the part below "Caused by" phrase:
Element not found {#PolicySummary_PolicyNumber span}
Expected: visible

Screenshot: file:/Users/andrei/projects/selenide/statics/build/reports/tests/1540384401469.1.png
Page source: file:/Users/andrei/projects/selenide/statics/build/reports/tests/1540384401469.1.html
Timeout: 4 s.
Caused by: NoSuchElementException: Unable to locate element: #PolicySummary_PolicyNumber span
	at com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:34)

@asolntsev Exactly Andrei. That was what I was expecting but not in my case. What I have pasted before and now again below is the entire stacktrace from beginning to end with nothing missing.
Here is the line of code where it happens: Is this not a selenide call?
	public void scrapePolicyNumber(){
		final String POLICY_LOC = "#PolicySummary_PolicyNumber span";

		policy_num = $(POLICY_LOC).shouldBe(Condition.appear).getText();
	}

So the call to $(POLICY_LOC).shouldBe(Condition.appear).getText for the given element failed because the page that was expected was not loaded for whatever reason. I expected to see the screenshot of what was on the screen when the NoSuchElementException was thrown but nothing ...
This feature I understand as @plagov noted is basic and has always worked for me in the older selenide build but since I made this upgrade to the recent libraries, it is no longer showing for me.
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#PolicySummary_PolicyNumber span"}
  (Session info: chrome=69.0.3497.100)
  (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:24:21.231Z'
System info: host: 'WCD00065', ip: '<IP_ADDRESS>', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.41.578737 (49da6702b16031..., userDataDir: C:\Users\AFAMOK~1\AppData\L...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:53137}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 69.0.3497.100, webStorageEnabled: true}
Session ID: 0092607e8af1a84ec48a210dfd48a534
*** Element info: {Using=css selector, value=#PolicySummary_PolicyNumber span}
	at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
	at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:322)
	at org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:416)
	at org.openqa.selenium.By$ByCssSelector.findElement(By.java:431)
	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:314)
	at com.codeborne.selenide.impl.WebElementSelector.findElement(WebElementSelector.java:29)
	at com.codeborne.selenide.impl.ElementFinder.getWebElement(ElementFinder.java:56)
	at com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:44)
	at com.codeborne.selenide.commands.Should.should(Should.java:35)
	at com.codeborne.selenide.commands.Should.execute(Should.java:29)
	at com.codeborne.selenide.commands.Should.execute(Should.java:12)
	at com.codeborne.selenide.commands.Commands.execute(Commands.java:144)
	at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:90)
	at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:65)
	at com.sun.proxy.$Proxy0.shouldBe(Unknown Source)
	at cse.regress.features.BORFixture.scrapePolicyNumber(BORFixture.java:226)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at fitlibrary.closure.MethodClosure.invoke(MethodClosure.java:49)
	at fitlibrary.closure.MethodClosure.invokeTyped(MethodClosure.java:35)
	at fitlibrary.closure.CalledMethodTarget.invokeTyped(CalledMethodTarget.java:83)
	at fitlibrary.closure.CalledMethodTarget.invokeTyped(CalledMethodTarget.java:103)
	at fitlibrary.traverse.workflow.caller.DoActionCaller.run(DoActionCaller.java:40)
	at fitlibrary.traverse.workflow.DispatchRowInFlow.pickAndRunValidCaller(DispatchRowInFlow.java:98)
	at fitlibrary.traverse.workflow.DispatchRowInFlow.interpretRow(DispatchRowInFlow.java:53)
	at fitlibrary.traverse.workflow.DoTraverse.interpretRowBeforeWrapping(DoTraverse.java:99)
	at fitlibrary.traverse.workflow.DoTraverse.interpretRow(DoTraverse.java:96)
	at fitlibrary.flow.DoFlowOnTable.runTable(DoFlowOnTable.java:80)
	at fitlibrary.flow.DoFlowOnTable.runTable(DoFlowOnTable.java:56)
	at fitlibrary.flow.DoFlow.runTable(DoFlow.java:104)
	at fitlibrary.flow.DoFlow.runSingleTable(DoFlow.java:89)
	at fitlibrary.flow.DoFlowWithExtraTableAddedWhenNeeded.runStorytest(DoFlowWithExtraTableAddedWhenNeeded.java:33)
	at fitlibrary.suite.BatchFitLibrary.doTables(BatchFitLibrary.java:92)
	at fitlibrary.suite.BatchFitLibrary.doStorytest(BatchFitLibrary.java:50)
	at fitlibrary.suite.BatchFitLibrary.doTables(BatchFitLibrary.java:107)
	at fitlibrary.suite.FitLibraryServer.doTables(FitLibraryServer.java:36)
	at fitlibrary.suite.FitLibraryServer.doTables(FitLibraryServer.java:28)
	at fit.FitServerBridge.process(FitServerBridge.java:76)
	at fit.FitServerBridge.run(FitServerBridge.java:60)
	at fitlibrary.suite.FitLibraryServer.main(FitLibraryServer.java:54)

@afamee Also, as I see you use Fitness and this code runs in fuxture. Maybe this fixture somehow handle errors additianaly and print only e.g. error.getCause()? Can you check?

@afamee I cannot reproduce your issue. :( Without it, I am afraid we cannot fix it.
Did you try the previous suggestion by BorisOsipov?

@asolntsev Thank you Andrei. I tried tracing the code.. I found out that at this line below,

Error wrappedError = UIAssertionError.wrap(error, timeoutMs);

the stacktrace contains the screenshot but somewhere along the line, it gets truncated. So it could be as @BorisOsipov guessed that Fitnesse swallowing the original error.
@Override
public Object invoke(Object proxy, Method method, Object... args) throws Throwable {
if (methodsToSkipLogging.contains(method.getName()))
return Commands.getInstance().execute(proxy, webElementSource, method.getName(), args);
validateAssertionMode();

long timeoutMs = getTimeoutMs(method, args);
long pollingIntervalMs = getPollingIntervalMs(method, args);
SelenideLog log = SelenideLogger.beginStep(webElementSource.getSearchCriteria(), method.getName(), args);
try {
  Object result = dispatchAndRetry(timeoutMs, pollingIntervalMs, proxy, method, args);
  SelenideLogger.commitStep(log, PASS);
  return result;
}
catch (Error error) {
  Error wrappedError = UIAssertionError.wrap(error, timeoutMs);
  SelenideLogger.commitStep(log, wrappedError);
  if (assertionMode == SOFT && methodsForSoftAssertion.contains(method.getName()))
    return proxy;
  else
    throw wrappedError;
}
catch (RuntimeException error) {
  SelenideLogger.commitStep(log, error);
  throw error;
}

}
I am still digging through but you can close the ticket if you need to. thank you for your time and great work on this tool. Makes everything simple. Since I started using it, I have not gone back.

Interesting, we also have experienced similar issue with a major switch from Selenide ver 3.7 to 5.0.1 - the screenshot for failed tests have disappeared. Still trying to figure out the true cause.
@afamee have you found anything?

Partially our problems are related to the issue #880
But I still do not see some screenshots for failed tests that in past were properly generated.


Library keeps user facing text in code, makes it difficult to translate

The SDK maintains user facing text in e.g. ParticleSetupResultsViewController.m. This cannot be translated without customization of the SDK and thereby (sort of) breaking future upgrades. Text should be broken out in, for example, the ParticleSetupCustomization class or a new class specifically designed for translation issues.

right ... rather then just commenting on the code I decided to do something for a change ;-)  All strings have been externalized and can now be modified - see pull request.

Thank you for this. And sorry both this issue and pull request has been ignored for so long. Since a lot has changed in libraries recently, the PR can no longer be merged without some serious work on it. Right now there are no immediate plans to support localization, but I will add this as a ticket so that this can be discussed within the company. Will keep an issue open and will update when something new comes up. Not sure when this can happen.

Any reason why this PR wasnt considered before the bundle of changes made recently?

The main reason is that we can't just localize one piece of software without localizing everything surrounding it. Right now errors being returned from server are in english, iOS SDK has all errors in english and all android libraries only support english. This is very well made PR and I wish we could just proceed with merging it, but having one product out of 5 (or even more) supporting localization might cause lots of confusion.


Using tensorflow-gpu == 1.7.0 with CUDA 8

I am facing ImportError when I try calling tensorflow-gpu == 1.7.0 on a system with CUDA 8 and CuDNN 5.1. I am not authorized to update the CUDA version of the system, so am looking for a workaround.

ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

You can try to compile the tensorflow gpu of the specified CUDA version.But not sure if this will succeed.

tensorflow-gpu == 1.7.0 is a requirement that needs to be met in the project. CUDA and CuDNN versions of the system are not to be altered with. Is there a workaround to this problem?

@Akella17 You can still compile TensorFlow from source with the codebase on v.1.7.0 targeting the CUDA/CuDNN versions specified.

Okay. Thanks :)