Parser.xmlParser() no longer corrects tags that may not be self-closing

With 1.16.1 and earlier the following was true
        String testIframe = "<iframe src=\"https://example.com\"/>";
        String expectedResult = "<iframe src=\"https://example.com\"></iframe>";

        Document document = Jsoup.parse(testIframe, "", Parser.xmlParser());
        document.outputSettings().indentAmount(0).prettyPrint(false);
        String result = document.html();

        assertEquals(expectedResult, result);

With 1.16.2 "<iframe src="https://example.com"/>" remains "<iframe src="https://example.com"/>".
Is it intentional that tags that are not allowed to be self-closing now only get fixed when using the htmlParser?

Hi there,
The intention of the XML parser is to be a generic parser, and not follow the specific rules of the HTML parser.
Your snippet worked originally by a fluke of the implementation - the Tag object which holds these formatting rules was intended for the HTML parser and not the XML parser. In HTML we know what that an iframe element is and how it should behave. But in the XML parser we shouldn't assume that.
I didn't really intend for the XML parser to be used as a kind of semi-html parser, using some of the rules from HTML and ignoring others.
So this changed in #2008 when I added basic namespace support, to enable Math and SVG tags. Now the Tag set is namespaced, and in the XML parser, the HTML namespace is not set and therefore there is no matching iframe tag to return, and so there's no setting to disable self-closing.
A couple of ways I could think of changing this:

implement a namespace stack in the XML parser (there is an impl in the W3CDom which we might shift out to XML parser), and detect the namespace from an xmlns attribute, and lookup tags by that
add a default namespace parameter to the XML parser

Questions for you:

Can you tell me more about your usecase, and why you're not using the HTML parser?
Can you provide me a full sample of the HTML (or the source URL) so I can review implementation options

There is no problem in using the HTML parser.
I just wanted to make sure that it was not an a mistake.
Thank you very much for your answer.


Create api key on sandbox mode

Description of changes

Issue #, if available

Description of how you validated changes
Checklist

[ ] PR description included
[ ] yarn test passes
[ ] Tests are changed or added
[ ] Relevant documentation is changed or added (and PR referenced)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

Merging #8124 (de82d67) into auth-dir-v-next (acaff15) will increase coverage by 0.06%.
The diff coverage is 98.18%.

@@                 Coverage Diff                 @@
##           auth-dir-v-next    #8124      +/-   ##
===================================================
+ Coverage            54.24%   54.30%   +0.06%
===================================================
  Files                  671      674       +3
  Lines                38157    38211      +54
  Branches              7834     7850      +16
===================================================
+ Hits                 20697    20751      +54
  Misses               16614    16614
  Partials               846      846

Impacted Files
Coverage Δ

...tils/awscloudformation/cfn-api-artifact-handler.ts
87.23% <94.11%> (+0.94%)
:arrow_up:

...r-utils/awscloudformation/prompt-to-add-api-key.ts
100.00% <100.00%> (ø)

...mation/service-walkthroughs/appSync-walkthrough.ts
18.12% <100.00%> (+0.32%)
:arrow_up:

...ils/awscloudformation/utils/global-sandbox-mode.ts
100.00% <100.00%> (ø)

...c/extensions/amplify-helpers/get-api-key-config.ts
100.00% <100.00%> (ø)

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 acaff15...de82d67. Read the comment docs.


started working on rankings use case interactor functionality.

Nice work Hugo!
Your code clearly abides by clean architecture. You may want to refactor and remove setRankings, as right now the method doesn't seem to have a purpose. In the future, add JavaDoc comments to improve readibility. Otherwise, nice job!

Nice work Hugo!
While your code abides by SOLID principles for the most part, you should create a UpdateRankingsGuardianDataAccessInterface that is inherited by the GuardianDataAccessObject instead of using a GuardianDataAccessObject directly in your interactor. Additionally, you should add JavaDocs for increased readability.


does it work on macOS?

When I tried to load the extension, nothing happens. No warnings, no errors. But the extension is not loaded.
Have you tried on other OS?

The plugin does work with macOS.
I created a Github release. Please try again with the geores.rbz at https://github.com/GeoplexGIS/geores/releases/tag/2.0.2
How did you create the rbz? Did you use the Github source download or did you zip the files manually?

I had zipped the folder and changed its name.
With the release it's working, cheers!
Interface is German-only, so I'll need more time to try it... But the import doesn't work for me, all XML/GML files can't be selected, this is weird.

You are right, MacOS SketchUp had a problem with the two extensions specified by the importer. I'll push create a new version that will have two separate importers for both .xml and .gml.

Should work with https://github.com/GeoplexGIS/geores/releases/tag/v2.0.3
Updating is a little bit of a hazzle with SketchUp. I think you need to uninstall the plugin, restart, and then install the new version.


Dict comprehension with form leads to TypeError('cannot pickle '_thread.lock' object')

Describe the bug
I'm using a dictionary to hold some ui elements, that I call later in a factory method to create a form. After updating to marimo 0.7.6, I get the error
TypeError

This cell raised an exception: TypeError('cannot pickle '_thread.lock' object')

Environment
  "marimo": "0.7.6",
  "OS": "Windows",
  "OS Version": "11",
  "Processor": "Intel64 Family 6 Model 126 Stepping 5, GenuineIntel",
  "Python Version": "3.12.2",
  "Binaries": {
    "Browser": "125.0.6422.142",
    "Node": "v20.14.0"
  },
  "Requirements": {
    "click": "8.1.7",
    "importlib-resources": "missing",
    "jedi": "0.19.1",
    "markdown": "3.6",
    "pymdown-extensions": "10.7.1",
    "pygments": "2.17.2",
    "tomlkit": "0.12.4",
    "uvicorn": "0.29.0",
    "starlette": "0.37.2",
    "websockets": "11.0.3",
    "typing-extensions": "4.9.0",
    "ruff": "0.5.2"
  }
}

Code to reproduce
import marimo

__generated_with = "0.7.6"
app = marimo.App(width="medium")

@app.cell
def __():
    import marimo as mo
    return mo,

@app.cell
def __(mo):
    dict1={"hello": mo.ui.text(label="world")}
    dict2=mo.ui.dictionary({k: v.form() for k, v in dict1.items()})
    dict2
    return dict1, dict2

@app.cell
def __():
    return

if __name__ == "__main__":
    app.run()

@mrdobalina2k — thanks for reporting. Version 0.7.7 includes a fix. If you're still having problems, please re-open this issue.


Search no longer works (404), login may be broken as well

Seems logging in now returns a
status_str: 'Sorry, Staff Robot had a meltdown—check back later'
(not sure if this matters, login still seems to technically work)
On performing a search (from the example search.py), a 404 error is always returned.

Here is the relevant traceback
HTTPError                                 Traceback (most recent call last)
/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/tasks/__init__.pyc in <module>(
)
----> 1 u.search()

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/user.pyc in search(self, **kwar
gs)
    160             count = kwargs.pop('count')
    161             return search(session=self._session, count=count, **kwargs)
--> 162         return SearchFetchable(self._session, **kwargs)
    163
    164     def delete_threads(self, thread_ids_or_threads):

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/json_search.pyc in SearchFetcha
ble(session, **kwargs)
     35     return util.Fetchable(
     36         SearchManager(
---> 37             SearchJSONFetcher(session, **kwargs),
     38             ProfileBuilder(session)
     39         )

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/json_search.pyc in __init__(sel
f, session, **options)
     82         self._session = session or Session.login()
     83         self._options = options
---> 84         self._parameters = search_filters.build(session=self._session, **options)
     85
     86     def _get_headers(self):

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/filter.pyc in build(self, **kwa
rgs)
    153         return {
    154             builder.output_key: builder.transform_from_kwargs(kwargs)
--> 155             for builder in self.builders
    156             if builder.decide(kwargs)
    157         }

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/filter.pyc in <dictcomp>((build
er,))
    154             builder.output_key: builder.transform_from_kwargs(kwargs)
    155             for builder in self.builders
--> 156             if builder.decide(kwargs)
    157         }
    158

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/filter.pyc in transform_from_kw
args(cls, kwargs)
     48
     49             def transform_from_kwargs(cls, kwargs):
---> 50                 return cls.transform(*[kwargs.get(key) for key in cls.keys])
     51
     52             def _set_defaults(cls):

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/json_search.pyc in transform(lo
cation, location_cache)
    213     # injection. A better solution is probably needed long term
    214     def transform(location, location_cache):
--> 215         return location_cache.get_locid(location)
    216
    217

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/location.pyc in get_locid(self,
 query)
     16         if query in self._query_cache:
     17             return self._query_cache[query]
---> 18         result = self._query(query)
     19         if 'results' in result and len(result['results']):
     20             locid = result['results'][0]['locid']

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/location.pyc in _query(self, qu
ery)
     32         return self._session.okc_get(
     33             'apitun/location/query',
---> 34             params={'q': query, 'access_token': self._session.access_token},
     35         ).json()

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/okcupyd/session.pyc in okc_method(self,
 path, secure, **kwargs)
    132         self.rate_limiter.wait()
    133         response = base_method(self.build_path(path, secure), **kwargs)
--> 134         response.raise_for_status()
    135         return response
    136     return okc_method

/usr/local/var/pyenv/versions/2.7.12/lib/python2.7/site-packages/requests/models.pyc in raise_for_statu(
self)
    849
    850         if http_error_msg:
--> 851             raise HTTPError(http_error_msg, response=self)
    852
    853     def close(self):

HTTPError: 404 Client Error:

The request that is failing is actually the request to get the location ID. It seems that this endpoint has been expired.
def transform(location, location_cache):
    return location_cache.get_locid(location)

We need to figure out if this just been completely eliminated or changed in some way.

This should be fixed now. Can you confirm @odkken .

Did a fresh clone and am actually seeing issue #79 again now.  I think I had commented out the imports before, but since I see it's been reported I figured I'd bring it up.
Also, I'm having trouble installing the requirements (looks like it has to do with the ~= version specification?) using pycharm's auto install feature.  I think it was trying to use anaconda on windows, and on linux it's using pip/setuptools (none of which succeed).

@odkken you shouldn't be getting #79 on the latest version since the line that was causing it is gone from the repository.

Here's the stack trace I get when running the search:
Traceback (most recent call last):
File "/root/okc2.7/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2869, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 4, in
import okcupyd
File "/home/moltar/pycharm-community-2016.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/root/okc2.7/local/lib/python2.7/site-packages/okcupyd/init.py", line 8, in
from . import tasks
File "/home/moltar/pycharm-community-2016.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/root/okc2.7/local/lib/python2.7/site-packages/okcupyd/tasks/init.py", line 7, in
from . import db as db_collection
File "/home/moltar/pycharm-community-2016.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/root/okc2.7/local/lib/python2.7/site-packages/okcupyd/tasks/db.py", line 15, in
@task(default=True)
File "/root/okc2.7/local/lib/python2.7/site-packages/invoke/tasks.py", line 303, in inner
autoprint=autoprint,
File "/root/okc2.7/local/lib/python2.7/site-packages/invoke/tasks.py", line 58, in init
self.positional = self.fill_implicit_positionals(positional)
File "/root/okc2.7/local/lib/python2.7/site-packages/invoke/tasks.py", line 149, in fill_implicit_positionals
args, spec_dict = self.argspec(self.body)
File "/root/okc2.7/local/lib/python2.7/site-packages/invoke/tasks.py", line 144, in argspec
raise TypeError("Tasks must have an initial Context argument!")
TypeError: Tasks must have an initial Context argument!

its probably importing it from the wrong place. or maybe getting the tasks list from the wrong place, or perhaps you have an old version of invoke.
Don't clone okcupyd like that
you should install it with the command mentioned in the README (unless your plan on actually developing it yourself).


Crash - Search: 'One-based index cannot be zero'

When searching the Oni2 repro with a query like state, we hit a crash:
 Exception Invalid_argument("One-based index cannot be zero"):
Raised at file "src/Index.re", line 8, characters 14-82
Called from file "src/UI/SearchPane.re", line 59, characters 8-41
Called from file "list.ml", line 88, characters 20-23
Called from file "list.ml", line 88, characters 32-39
Called from file "list.ml", line 88, characters 32-39
Called from file "list.ml", line 88, characters 32-39

Past the One-based index error, there may also be a StackOverflow error.

Interesting. The offending piece of code used to be
Some((Index.ofInt1(hit.charStart), Index.ofInt1(hit.charEnd))),

and now is:
      Some((
        Index.fromOneBased(hit.charStart),
        Index.fromZeroBased(hit.charEnd),
      ))

So seems like they both should be zero-based and that there's an off-by-one error where this is used instead.

Thanks for looking at it, @glennsl !


Create your Profile [Mobile - IOS] - After entering the address and selecting one of the pop up messages, page breaks

![ ] (images/IMG_8257)

Create your Profile [Mobile - IOS] - After entering the address and selecting one of the pop up messages, page breaks
1 - Using Mobile IOS ( Staging)> first create a new user in Sign in/Register and follow steps .
2 - Navigate to to Sign in /Register after the email is confirmed and enter all required fields until address displays
3 - On address field, enter an address and select an option that displays below the field.
Current results: page breaks as per image attached

https://www.notion.so/fightpandemics/How-to-create-a-ticket-new-issue-on-GitHub-4405fe4ef57e4875b18fce25043d3d6a
Please add the proper things needed. Read up on this notion link


How do I apply it to the game?

pls help

I'm not quite sure what you mean by this.
To install the plugin on a Bukkit/Spigot/Paper server you would download the jar file (downloaded from the Spigot site or my Jenkins depending on whether or not you are using 1.14) and drop it into the "plugins" folder. Then start (or restart) the server and type /troll into the chat to get additional help on how to use the plugin.

I mean
I don't know how I can put this file into the game

That's a very vague question. What steps have you followed thus far, and what are you having trouble with? Be VERY specific.

I just downloaded the file to my computer, and I don't know what to do with this file ...

There's excellent guides to installing Bukkit plugins all over the internet. A few examples are here, here, here, and here

Thank you


duck.com no longer held by Google

duck.com has been transferred to duckduckgo. Please remove the entry  from google lists.

This is fixed, thank you.


EXE has reported viruses in 22 different antivirus products

I tested this in a sandbox, but there is no way I would run this on real system because it is reported as malicious by 22 antivirus products:
https://www.virustotal.com/gui/file/62dbaa8d3f763ec75fa2a9826e852a456475cc21f9937e2e29c17fde6b6c47f0
I suspect the BAT to EXE converter has code that is triggering the virus reports.  Recommend using another EXE creator such as  Nullsoft NSIS or  Inno Setup.  As a side benefit, both of these EXE creators compress the source files.

I suspect the BAT to EXE converter has code that is triggering the virus reports.

The BAT-to-EXE converter is a closed source EXE from an obscure source.  How can we have confidence the converter is not introducing malicious code into the EXE it generates?

I'm in the process of doing it in Python. We'll see how the weekend goes.

It's been redone in Python. Source code is in _Source.
Converted to an executable with PyInstaller.
https://www.virustotal.com/gui/file/8f283fdc0021618dcdb085a1878bfb612f65ede6faef569149f1ee6242a12c79/detection

Running from source with python 3.11.1:
PS C:\temp> python.exe .\remove.py
Traceback (most recent call last):
File "C:\utl\remove.py", line 37, in
src = os.path.join(sys._MEIPASS, "setup.exe")
^^^^^^^^^^^^
AttributeError: module 'sys' has no attribute '_MEIPASS'

The new python EXE is being flagged in 6 products (down from 22), which is better.
https://github.com/pyinstaller/pyinstaller/issues/6754
"The false positives occur because some people use PyInstaller for malware, and PyInstaller's bootloader is the only guaranteed common piece between them all."

I am more interested in powershell or cmd file coded solutions.  EXEs are too opaque and have virus scanning issues which make them difficult to trust.  Python is nice, but not a good choice for my purposes since Python isn't installed on Windows by default.

@WayneSherman  can i use the bat file.. for creating my app? maybe it help to solve the specified issues in my project.. Also i will put in 2.5.1 version of the script (be like)

@WayneSherman
AttributeError: module 'sys' has no attribute '_MEIPASS'
Where the  "Setup.exe" is located when built with PyInstaller.
I am more interested in powershell or cmd file coded solutions.
I have no plans to update the .bat version (at the moment).  Using a stand alone .bat file requires that setup.exe is also in the same directory as the script (not as portable as a single file). A batch script could download the setup.exe, which would take longer and require file verification.
Python is nice, but not a good choice for my purposes since Python isn't installed on Windows by default
That is why it is converted to a .exe file. If you do not trust the presented .exe, use the files here to build it.


Make it clear that this package is not available in Homebrew

:+1:

:shipit:

Thanks, sorry it's taken so long to get to look at this.


Posibility to Merge only Literature

The Plant List with Literature is one of the xrelease sources, Nevertheless @DianRHR and I have decided to keep it with the lowest possible priority as its taxonomy is outdated.
Nevertheless, this source literature information is very valuable.  We could overcome this issues if we have an option to decide what we want to merge from each source regarding their of additional data. In this particular example to have the option to merge only literature references but no names.

ReCent example from GBIF https://github.com/gbif/backbone-feedback/issues/504

we should offer a way to only merge publishedIn and augment existing references with a (BHL) link and/or DOI


Build and publish to NPM on release

This PR adds a GitHub workflow that builds the web components package and publishes it to NPM when a release is tagged. Note that publishing to NPM won't succeed unless there's a repository secret called NPM_TOKEN. See the GitHub docs for details. I'll send an email to the group about how this token may be generated.
Since it's inconvenient to test this PR, check out my fork where I prototyped this and the end result on NPM.

looks fine to me insofar as I see an npm package was generated.

https://www.npmjs.com/~sammyjava

I like that we're publishing to NPM but I'm not sure how I'd use it in the way we use it, loading it in a Jekyll site, in which case I'd want to build the minified JS file.
shokin@morangie:~$ mkdir web-components-test
shokin@morangie:~$ cd web-components-test/
shokin@morangie:~/web-components-test$ npm i @alancleary/web-components

added 7 packages in 199ms
shokin@morangie:~/web-components-test$ npm run build
npm ERR! Missing script: "build"
npm ERR!
npm ERR! To see a list of scripts, run:
npm ERR!   npm run

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/shokin/.npm/_logs/2023-08-02T21_03_43_700Z-debug-0.log
shokin@morangie:~/web-components-test$

@sammyjava The package includes the build artifacts instead of the source code. Here's the files of interest in the package:

@alancleary/web-components/lib/ contains the compiled .js files with corresponding .d.ts and .d.ts.map type files so you can use the web component code as a library in another JS/TS project.
@alancleary/web-components/dist/web-components.min.js the bundled and minified file intended for using the web components via their HTML tags.

Got it. Works for me!

Whooops, must have hit the wrong button. Reopening.

@sammyjava I'm assuming you didn't mean to close the PR. Reopening.

@sammyjava I'm assuming you didn't mean to close the PR. Reopening.

 :)

I've added an NPM_TOKEN secret to the web components repo so this should be good to go now. I'll put a placeholder readme for NPM and then tag a release.


Fixes and backports from v3.0

fix PyPi package interferences (Jinja2 and MarkupSafe reflected with Sphinx ~=3.3)
auto-load our new boilerplate by Zephyr
new "version_bridle.h" generator

https://bridle.tiac-systems.net/ghpr/doc/PR-58


Use hash for finally guards

Localizing an array entry causes segfaults when creating a pseudofork on
Win32 perl < 5.20.
Replacement for #2

thanks, merged! will release as another TRIAL.


Update the Node.js version on the bots

In PR #16293 we increased the minimum supported Node.js version to 18, which is the current LTS version.
After that landed I noticed in the logs, see below, that the bots run older Node.js versions and that could become a problem (as we start using modern JS features).
@calixteman Can you please update the bots to Node.js version 18?

The Linux-bot now logs (at the start):

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: undefined,
npm WARN EBADENGINE   required: { node: '>=18' },
npm WARN EBADENGINE   current: { node: 'v16.16.0', npm: '8.11.0' }
npm WARN EBADENGINE }
...

The Windows-bot now logs (at the start):

npm WARN config global `--global`, `--local` are deprecated.

I updated node on the windows bot and it should  be ok.
For the linux one, ubuntu version was too old (16.04), hence I began to upgrade it: so wait and see now.

/botio test

Both bots are now using node 18.16.
I just triggered some tests:
https://github.com/mozilla/pdf.js/pull/16397#issuecomment-1538263288
Likely we'll have some diffs on the linux bot: all the packages (and especially font ones) have been updated, hence I wouldn't surprised to see some differences.

Seems to work; thank you!


[Hyper-V] Write peer ip address to generated file

Vagrant not supporting port-forwarding on Hyper-V. Vagrant has a limitation with networking here more info.
CC(SubutaiControlCenter) launches Peer-Os via the console port. Vagrant Subutai plugin should write peer IP address to generated  file when Vagrant executes the following command:
vagrant up

How to test (on windows):

run command vagrant init subutai/stretch-master
then run the other command vagrant up --provider=hyperv

Then check the folder for the file with name generated.yml
There should be _IP_HYPERV

I installed dev CC and its components.
Switched provider to HyperV
Updated the plugin and boxes:

Then followed the commands above ^
Successfully brought up a peer:

There is a file generated.yml.
Fixed on dev


How can I use ClearScript to call Node.js script with NPM and possibly pass some parameter?

Hello:
I want to know if I can find how can I call some Node.js script from C#, which call a npm package called ccxt, and return the truncated strings to C#.  And one step further, how can I call similar Node.js script and pass some parameter and get the results back to C#.
My OS: Window 10 Pro (version 21H2)
Node.js: version: 18.10.0
CCXT: version: 2.0.79
The following is node.js script:
D:\nodejs\CCXT_Exchanges>type ccxt_all_exchanges.js
'use strict';
const ccxt = require('ccxt');
console.log(ccxt.version);
var all_exchanges = ccxt.exchanges
console.log(all_exchanges)
D:\nodejs\CCXT_Exchanges>
The output for running the node.js script:
D:\nodejs\CCXT_Exchanges>node ccxt_all_exchanges.js
2.0.79
[
'aax',                'alpaca',        'ascendex',
'bequant',            'bibox',         'bigone',
'binance',            'binancecoinm',  'binanceus',
'binanceusdm',        'bit2c',         'bitbank',
'bitbay',             'bitbns',        'bitcoincom',
'bitfinex',           'bitfinex2',     'bitflyer',
'bitforex',           'bitget',        'bithumb',
'bitmart',            'bitmex',        'bitopro',
'bitpanda',           'bitrue',        'bitso',
'bitstamp',           'bitstamp1',     'bittrex',
'bitvavo',            'bkex',          'bl3p',
'blockchaincom',      'btcalpha',      'btcbox',
'btcex',              'btcmarkets',    'btctradeua',
'btcturk',            'buda',          'bw',
'bybit',              'bytetrade',     'cex',
'coinbase',           'coinbaseprime', 'coinbasepro',
'coincheck',          'coinex',        'coinfalcon',
'coinmate',           'coinone',       'coinspot',
'crex24',             'cryptocom',     'currencycom',
'delta',              'deribit',       'digifinex',
'exmo',               'flowbtc',       'fmfwio',
'ftx',                'ftxus',         'gate',
'gateio',             'gemini',        'hitbtc',
'hitbtc3',            'hollaex',       'huobi',
'huobijp',            'huobipro',      'idex',
'independentreserve', 'indodax',       'itbit',
'kraken',             'kucoin',        'kucoinfutures',
'kuna',               'latoken',       'lbank',
'lbank2',             'liquid',        'luno',
'lykke',              'mercado',       'mexc',
'mexc3',              'ndax',          'novadax',
'oceanex',            'okcoin',        'okex',
'okex5',              'okx',           'paymium',
'phemex',
... 20 more items
]
D:\nodejs\CCXT_Exchanges>
The issue here is that console.log only shows the first 100 items, there are 20 more items will be returned.  I want to use ClearScript to run the above node.js script and return all 120 items to C#.
How can I do this?
One step further:
I modified the above node.js script to add one parameter, so the script will return detailed information about only one exchange from total 120 exchanges.
D:\nodejs\CCXT_Exchanges>type ccxt_get1_exchange.js
'use strict';
const ccxt = require('ccxt');
console.log(ccxt.version);
const [nodejs, script1, exchange1] = process.argv;
let exchange = new ccxt[exchange1];
console.log(exchange)
D:\nodejs\CCXT_Exchanges>
To use this script, add one exchange name as show from the first node.js, like the following:
D:\nodejs\CCXT_Exchanges>node ccxt_get1_exchange.js aax
2.0.79
aax {
isBrowser: false,
…..
A lot of output, here are ignored.
I want to know how I can call the node.js script and pass one parameter, like: aax, and get the result, a very long string, back to C#.
I am using Visual Studio 2022, version 17.3.6; I can install NUGET package for ClearScript version 7.3.4.
Please advise on how can I write some C# code in Console program or in WinForms project for this job.
Thanks,

Hi @zydjohnHotmail,
ClearScript only provides a standard JavaScript environment. It implements neither the Web APIs nor the Node.js API. The idea is that you start with the bare standard and use .NET to provide whatever APIs your script code requires.
However, the CCXT code doesn't seem to have too many external dependencies, at least when it comes to executing its main script. In fact, loading the web version of CCXT is quite easy:
using var engine = new V8ScriptEngine();
engine.Execute("self = this; setTimeout = () => {}");
engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading;
engine.ExecuteDocument("https://cdn.jsdelivr.net/npm/ccxt@2.0.79/dist/ccxt.browser.js");

Once you've done that, the .NET host and the script engine can work together to access the data:
engine.AddHostType(typeof(Console));
engine.Execute(@"
    function dumpExchangeNames() {
        for (let exchange of ccxt.exchanges) {
            Console.WriteLine(exchange);
        }
    }
    function dumpExchange(name) {
        const exchange = new ccxt[name]();
        Console.WriteLine(name + ': ' + JSON.stringify(exchange, undefined, 4));
    }
");
engine.Script.dumpExchangeNames();
engine.Script.dumpExchange("bitflyer");
engine.Script.dumpExchange("coinbase");
// etc.

It does look like some other CCXT capabilities require additional APIs – e.g., fetch – so if you need that functionality, you'll have to expose a fetch implementation yourself.
Good luck!

Hello:
Thank you very much for your code and explanation.  I have only one minor issue, most of the time, I will call CCXT Node.js script from a WinForms project, as I can have many different tasks assigned to different button click, so each button will do specific job. For example, button1 will call CCXT to get exchange AAX, and button2 will call CCXT to get exchange Binance.
How can I return the result as one long string, and in C# code, I can use newtonsoft to parse the Json format string, I don't want just see the results appear on the console window.
Please advise,
Thank you very much!

HI @zydjohnHotmail,

How can I return the result as one long string, and in C# code, I can use newtonsoft to parse the Json format string

No problem at all:
engine.Execute(@"
    function getExchangeJSON(name) {
        const exchange = new ccxt[name]();
        return JSON.stringify(exchange);
    }
");
string json = engine.Script.getExchangeJSON("coinbase");
var exchange = JObject.Parse(json);
Console.WriteLine("{0} {1}", exchange["name"], exchange["version"]);
Console.WriteLine(exchange["requiredCredentials"]);

Cheers!

Hello:
Thank you very much for your code.  I have done the following: I created a WinForm App, target .NET 6.0; and added necessary NUGET packages, and wrote the following C# code, which is called from one button click:
       private async Task Call_CCXT_JS_From_Web()         {             using V8ScriptEngine engine = new();             engine.Execute("self = this; setTimeout = () => {}");             engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading;             engine.ExecuteDocument(CCXT_JS_Web_Loader_Url);             engine.AddHostType(typeof(Console));             engine.Execute(@"     function getExchangeJSON(name) {         const exchange = new ccxt[name]();         Console.WriteLine(name + ': ' + JSON.stringify(exchange, undefined, 4));     } ");             string json = engine.Script.getExchangeJSON("coinbase");             var exchange = JObject.Parse(json);             Debug.Print(json);             Debug.Print("{0} {1}", exchange["name"], exchange["version"]);             Debug.Print("{0}",exchange["requiredCredentials"]);         }
But when I run my code, I got the following error:
System.Reflection.TargetInvocationException
HResult=0x80131604
Message=Exception has been thrown by the target of an invocation.
Source=System.Private.CoreLib
StackTrace:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Delegate.DynamicInvoke(Object[] args)
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, WM msg, IntPtr wparam, IntPtr lparam)
at Interop.User32.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.Interop.Mso.IMsoComponentManager.FPushMessageLoop(UIntPtr dwComponentID, msoloop uReason, Void* pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(msoloop reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(msoloop reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at ClearScriptForm.Program.Main() in D:\ArbitBTC\Helpers\ClearScriptForm\ClearScriptForm\Program.cs:line 14
This exception was originally thrown at this call stack:
System.Dynamic.UpdateDelegates.UpdateAndExecute1<T0, TRet>(System.Runtime.CompilerServices.CallSite, T0)
ClearScriptForm.Form1.Call_CCXT_JS_From_Web() in Form1.cs
ClearScriptForm.Form1.BTNClearScript_Click(object, System.EventArgs) in Form1.cs
System.Threading.Tasks.Task.ThrowAsync.AnonymousMethod__128_0(object)
Inner Exception 1:
RuntimeBinderException: Cannot implicitly convert type 'Microsoft.ClearScript.Undefined' to 'string'
I think it could be something with this statement:
Console.WriteLine(name + ': ' + JSON.stringify(exchange, undefined, 4));
ClearScript did not know how to handle undefined.
Please advise on how to fix this.
Again, thank you very much!

Hi @zydjohnHotmail,

I don’t know how to write async functions in ClearScript

It is the script engine – not ClearScript – that defines the supported language features. Luckily, V8 complies with the latest JavaScript standards, so it has full support for async functions.

and how to pass the API_key, Secre_Key

Here's a quick sample that demonstrates JavaScript async functions, passing arguments from the host, and ClearScript's support for promise-task interoperability:
public static async Task Main() {
    using (var engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableTaskPromiseConversion)) {
        engine.Script.delay = new Func<int, Task>(Task.Delay);
        engine.AddHostType(typeof(Console));
        engine.Execute(@"
            async function repeatWithDelay(message, count, ms) {
                for (let i = 0; i < count; ++i) {
                    await delay(ms);
                    Console.WriteLine(message);
                }
            }
        ");
        await engine.Script.repeatWithDelay("Hello!", 5, 1000);
    }
}

As for the fetchBalance method you're trying to call, we played with it briefly. As suspected, fetchBalance depends on a few more non-standard APIs that ClearScript doesn't provide. The most significant of these is fetch, so you'll have to implement that yourself, perhaps with the help of .NET's HttClient class.
Good luck!

Hello:
Thank you very much for your code. I think may it is possible since CCXT has the source code we can use, if I spend enough time to figure out how CCXT implement fetch, then use the fetch with plain JavaScript in ClearScript, this should work, right?
Please advise on my idea.
By the way, I have another example to use CCXT aync function, but without personal keys.
The following is the description:
D:\nodejs\CCXT_Markets>type ccxt_exchange1_markets.js
'use strict';
const ccxt = require('ccxt');
console.log(ccxt.version);
const [nodejs, script1, exchange1, ticker1] = process.argv;
(async function ()
{
let exchange = new ccxt[exchange1];
await exchange.loadMarkets();
console.log(exchange.id);
let ticker_data = await exchange.fetchTicker(ticker1);
console.log (ticker_data)
}) ();
To use the script, pass 2 parameters, one is exchange name, as appeared in the first script, pick any one from the 120 items shown above; the second parameter is one crypto-currency name, like: BTC/USDT.
The following is one example how to use the Node.JS code:
D:\nodejs\CCXT_Markets>node ccxt_exchange1_markets.js binance BTC/USDT
Let me know if you can use ClearScript to call this Node script with too much efforts.
Thanks,

hi @zydjohnHotmail,

if I spend enough time to figure out how CCXT implement fetch, then use the fetch with plain JavaScript in ClearScript, this should work, right?
Please advise on my idea.

Since standard JavaScript has no I/O facilities, a script can't implement fetch without help from the host. Luckily, .NET provides tons of support for web requests, so it shouldn't be too difficult to implement fetch on top of HttpClient or something similar.

Let me know if you can use ClearScript to call this Node script with too much efforts.

That script uses several non-standard facilities: console, process, and whatever fetchTicker depends on, which probably includes fetch, setTimeout, and clearTimeout.
Instead of using process.argv, your script could have the async function declare exchange1 and ticker1 as parameters, and we've already demonstrated how to pass arguments from the host. As for console, you could easily use .NET's Console class to implement the required subset. You'll also need proper implementations of setTimeout, clearTimeout, and fetch. Since we haven't been able to test beyond that, we don't know whether CCXT uses additional non-standard facilities.
Cheers!

Hello:
Thanks for your code, I am now trying to use a simple way, which many other people told me it works.
I simply run a CMD command line to launch node program and pass parameter, to make it simple, I simply use the first node.js script, which shows all the exchanges CCXT has now.
The following is my C# code:
Process p = new();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c node D:\nodejs\CCXT_Exchanges\ccxt_all_exchanges.js";
p.Start();
p.WaitForExit();
I can run this code, however, it seems impossible to see any output from the CCXT node.js script.  The process window just show less than 1 second, and it disappears, no time to see the output, which should show 100 exchanges CCXT supports.
I also tried other process.StartInfo parameter combinations, but none them can show me the output from node.js, all of them, the command window disappers too quick to see anything clearly.
Do you think I can use process to run node.js script from CMD?
I don't know if my environment is different from others or not, I am using Windows 10 Pro (version 21H2), and my current node version is: 19.0.0; I am using X64.
I wrote all my C# program target .Net 6.0 for x64 CPU.
Please advise,
Thanks,

Hi @zydjohnHotmail,

I can run this code, however, it seems impossible to see any output from the CCXT node.js script.

You should be able to capture the output as follows:
Process p = new();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c node D:\nodejs\CCXT_Exchanges\ccxt_all_exchanges.js";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
var output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

Now you can display or process output however you wish.
Good luck!

Hello:
Thanks for your code, now, I decied to use the most basic JavaScript, as the following:
D:\nodejs\CCXT>type hello_world.js
console.log('Hello World');
D:\nodejs\CCXT>node hello_world.js
Hello World
D:\nodejs\CCXT>
I think it is basic enough.
Then I create one Console Project (C#) target either .NET 5 or .NET 6.
The following is the code:
using System;
using System.Diagnostics;
namespace ConsoleCallCCXT
{
public class Program
{
static void Main(string[] args)
{
Process p = new();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c node D:\nodejs\CCXT\hello_world.js.js";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
var output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Console.Beep();
}
}
}
When I run this, I can hear beep, but I saw the following error:
node:internal/modules/cjs/loader:998
throw err;
^
Error: Cannot find module 'D:\nodejs\CCXT\hello_world.js.js'
at Module._resolveFilename (node:internal/modules/cjs/loader:995:15)
at Module._load (node:internal/modules/cjs/loader:841:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:82:12)
at node:internal/main/run_main_module:23:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Node.js v19.0.0
D:\Helpers\ConsoleCallCCXT\ConsoleCallCCXT\bin\Debug\net6.0\ConsoleCallCCXT.exe (process 13356) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Press any key to close this window . . .
Please advise on how to fix this?
It seems to be wired, the most basic JavaScript, why I can't run from console project?

Hi @zydjohnHotmail,

Error: Cannot find module 'D:\nodejs\CCXT\hello_world.js.js'

Your problem might be here:
p.StartInfo.Arguments = "/c node D:\nodejs\CCXT\hello_world.js.js"; // ← wrong file name?

Cheers!

Hello:
Sorry for my typo, I changed the code, now it can run, but I can't see any output "Hello World".
Any suggestions on this issue?
Thanks,

I changed the code, now it can run, but I can't see any output "Hello World".

The code above captures the Node.js output in the output string variable, but it doesn't display or process it in any way. Try adding a Console.WriteLine(output) or something like that.

Hello:
Sorry, I don't quite understand how to do this.
Do you have some code sample, simply shows the "Hello World" in C# console project?
Thanks,

Hi @zydjohnHotmail,

Then I can get only the first 100 items, is there any way to return all 120 items to C# and show all 120 items in C# project?

The console.log method limits arrays to 100 items, but you can convert your array to a string and log that instead. Try changing your ccxt_all_exchanges.js file so that it looks something like this:
'use strict';
const ccxt = require('ccxt');
console.log(ccxt.version);
var all_exchanges = ccxt.exchanges;
console.log(JSON.stringify(all_exchanges, undefined, 4));

Here's another possibility:
'use strict';
const ccxt = require('ccxt');
const util = require('util')
console.log(ccxt.version);
var all_exchanges = ccxt.exchanges;
console.log(util.inspect(all_exchanges, { maxArrayLength: null }));

Good luck!

Hello:
Thanks for your help.
I am trying now to see if I can use ClearScript, not console to get async function results. The code doesn’t use any personal data, so everyone can call it.
The following is the Node.js code:
D:\nodejs\CCXT_Binance>type Binance1PairOrderBook.js
const ccxt = require('ccxt');
console.log(ccxt.version);
if (process.argv.length != 3)
{
console.error('Usage: BTC/USDT');
console.error('Please try again!');
process.exit(1);
}
const [nodejs, script1, pair1] = process.argv;
let exchange = new ccxt.binance
({
'adjustForTimeDifference': true,
defaultType: 'spot',
'verbose': false
});
const pair1OrderBook = async (pair1) => {
try
{
await exchange.loadMarkets();
const orderbook1 = await exchange.fetchOrderBook(pair1);
if (typeof orderbook1 !== 'undefined')
{
const json_orderbook = JSON.stringify(orderbook1);
console.log(json_orderbook);
}
else
{
const obj_orderbook0 = ({ 'Symbol': pair1, 'Data': [] });
const json_orderbook0 = JSON.stringify(obj_orderbook0);
console.log(json_orderbook0);
}
}
catch (err)
{
console.error(err)
}
};
pair1OrderBook(pair1);
To use this code, call this with one cryptocurrency trading pair, the biggest pair is: BTC/USDT, but the output contains too many rows, so calling it with not very active pairs, like this:
D:\nodejs\CCXT_Binance>node Binance1PairOrderBook.js FXS/USDT
2.1.3
(node:20492) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use node --trace-warnings ... to show where the warning was created)
{"symbol":"FXS/USDT","bids":[[6.436,5.5],[6.432,51.4],[6.428,94.5],[6.424,1245.3],[6.421,5],[6.416,75.1],[6.415,277.2],[6.414,642],[6.412,391.8],[6.411,521.1],[6.41,334.8],[6.407,546.8],[6.403,31],[6.402,57.5],[6.4,26],[6.398,4.1],[6.396,11.8],[6.393,2.4],[6.392,3.9],[6.391,750],[6.39,8.2],[6.388,2.4],[6.387,18.2],[6.386,3.2],[6.38,39],[6.377,9.9],[6.371,58],[6.368,5.5],[6.366,1.6],[6.361,4.1],[6.357,68.5],[6.356,3],[6.354,10.9],[6.352,11.3],[6.35,206.8],[6.337,1499.3],[6.336,73.2],[6.333,4.8],[6.328,5.3],[6.327,131],[6.324,4.1],[6.323,11.4],[6.319,8.2],[6.317,2.4],[6.311,7.9],[6.31,2],[6.309,2.4],[6.305,4.6],[6.3,4.7],[6.292,76.7],[6.288,4.1],[6.283,8.2],[6.28,5.3],[6.274,82.4],[6.272,1.6],[6.259,104],[6.252,4.1],[6.25,104.8],[6.248,8.2],[6.246,4.9],[6.245,234.2],[6.244,109.6],[6.243,8.7],[6.242,2.5],[6.241,36],[6.232,5.4],[6.229,112.1],[6.225,259.2],[6.224,10.3],[6.223,221.7],[6.216,4.1],[6.212,8.2],[6.21,2.4],[6.2,24.2],[6.185,5.4],[6.18,4.1],[6.177,8.2],[6.171,4.5],[6.166,4.8],[6.163,12.2],[6.16,19.6],[6.15,8.8],[6.144,4.1],[6.143,2.7],[6.142,8.2],[6.139,5.5],[6.134,4.8],[6.129,740.6],[6.12,1.7],[6.109,4.1],[6.108,6.5],[6.106,8.2],[6.092,5.5],[6.083,4.8],[6.076,3.7],[6.074,4.1],[6.071,8.2],[6.059,9],[6.046,5.5],[6.039,4.1]],"asks":[[6.44,21.3],[6.444,31.6],[6.45,38.4],[6.451,58],[6.452,140.5],[6.453,52.7],[6.457,320.8],[6.461,53.9],[6.464,150],[6.465,12.1],[6.467,315.4],[6.477,3.4],[6.484,4.1],[6.486,18.5],[6.487,5.2],[6.489,48.5],[6.496,8.2],[6.505,500],[6.506,427.4],[6.507,55.9],[6.517,14.4],[6.521,754.1],[6.529,153.8],[6.531,8.2],[6.536,5.2],[6.539,8.8],[6.541,8.4],[6.543,171.2],[6.55,25.5],[6.551,504.6],[6.556,17.5],[6.559,4.1],[6.567,8.2],[6.574,3.7],[6.583,4.8],[6.586,5.1],[6.597,4.1],[6.6,166.6],[6.602,20.4],[6.625,4.3],[6.635,4.1],[6.637,5.1],[6.638,8.2],[6.639,8.3],[6.651,221.3],[6.654,9.3],[6.666,4.8],[6.673,12.3],[6.674,193.1],[6.681,6.1],[6.687,5.1],[6.7,9.3],[6.709,8.2],[6.712,4.1],[6.739,13.2],[6.74,89.5],[6.744,8.2],[6.75,13.2],[6.764,13.1],[6.769,104.7],[6.77,479],[6.773,16.3],[6.779,8.2],[6.784,12],[6.789,4.1],[6.79,5],[6.8,2.2],[6.801,3.1],[6.815,8.2],[6.829,4.1],[6.833,4.8],[6.841,8.1],[6.843,4.9],[6.85,11.5],[6.864,3.1],[6.867,59.9],[6.868,166],[6.869,407.9],[6.875,10.3],[6.886,8.2],[6.895,4.9],[6.907,4.1],[6.911,5.8],[6.912,5.8],[6.916,9.2],[6.921,8.2],[6.943,8.8],[6.944,7.9],[6.948,9],[6.951,10.3],[6.957,8.2],[6.965,22.5],[6.974,32.7],[6.981,473.1],[6.986,3.4],[6.988,4.1],[6.989,3.4],[6.992,8.2],[7,65.2],[7.001,4.8]],"nonce":180573549}
Or you can call one pair, which exists, but no order book to show, the result like this:
D:\nodejs\CCXT_Binance>node Binance1PairOrderBook.js ETH/USDC
2.1.3
(node:17604) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use node --trace-warnings ... to show where the warning was created)
{"symbol":"ETH/USDC","bids":[],"asks":[],"nonce":2090539859}
Now, I create one WinForms app, and write the following code:
private async Task Call_CCXT_Get_1Orderbook()
{
using V8ScriptEngine engine = new();
engine.Execute("self = this; setTimeout = () => {}");
engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading;
engine.Script.done = new ManualResetEventSlim();
engine.ExecuteDocument(CCXT_JS_Web_Loader_Url);
engine.Execute(@"
let exchange = new ccxt.binance
({'adjustForTimeDifference': true,
defaultType: 'spot',
'verbose': false });
async function pair1OrderBook(pair1) {
try
{
await exchange.loadMarkets();
const orderbook1 = await exchange.fetchOrderBook(pair1);
if (typeof orderbook1 !== 'undefined')
{
const json_orderbook = JSON.stringify(orderbook1);
console.log(json_orderbook);
}
else
{
const obj_orderbook0 = ({ 'Symbol': pair1, 'Data': [] });
const json_orderbook0 = JSON.stringify(obj_orderbook0);
console.log(json_orderbook0);
}
}
catch (err) {
console.error(err)
}
};
pair1OrderBook(pair1);
");
await engine.Script.pair1OrderBook("BTC/USDT");
Console.Beep();
}
CCXT update very quickly, in the past a few days, it released more than 100 version, so the latest web version is at:
public const string CCXT_JS_Web_Loader_Url =
<EMAIL_ADDRESS>When I run my code, I got the following error:
System.Reflection.TargetInvocationException
HResult=0x80131604
Message=Exception has been thrown by the target of an invocation.
Source=System.Private.CoreLib
StackTrace:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Delegate.DynamicInvoke(Object[] args)
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, WM msg, IntPtr wparam, IntPtr lparam)
at Interop.User32.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.Interop.Mso.IMsoComponentManager.FPushMessageLoop(UIntPtr dwComponentID, msoloop uReason, Void* pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(msoloop reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(msoloop reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at ClearScriptForm.Program.Main() in D:\ArbitBTC\Helpers\ClearScriptForm\ClearScriptForm\Program.cs:line 14
This exception was originally thrown at this call stack:
Microsoft.ClearScript.V8.SplitProxy.V8SplitProxyNative.Invoke(System.Func<Microsoft.ClearScript.V8.SplitProxy.IV8SplitProxyNative, T>)
Microsoft.ClearScript.V8.V8ScriptEngine.ExecuteInternal(Microsoft.ClearScript.UniqueDocumentInfo, string, bool)
Microsoft.ClearScript.V8.V8ScriptEngine.Execute.AnonymousMethod__0()
Microsoft.ClearScript.ScriptEngine.ScriptInvokeInternal(System.Func)
Microsoft.ClearScript.V8.V8ScriptEngine.ScriptInvoke.AnonymousMethod__0()
Microsoft.ClearScript.V8.SplitProxy.V8SplitProxyManaged.InvokeHostAction(System.IntPtr)
Inner Exception 1:
ScriptEngineException: ReferenceError: pair1 is not defined
Inner Exception 2:
ScriptEngineException: ReferenceError: pair1 is not defined
Please advise on how to fix this.  I think this way is much better than using CMD console output.
However, I can’t figure this out.
Thanks,

Please advise on how to fix this.

Here's the last line of your script:
pair1OrderBook(pair1);

The script fails at that line because pair1 isn't defined. You've defined a function (pair1OrderBook) that has a parameter named pair1, but there's nothing with that name that's visible at the top level.
If you remove that line, the script should succeed, and you should be able to call pair1OrderBook from the host, but again, the CCXT code is likely to fail in ClearScript due to the lack of web APIs such as fetch.


Oboe sample update: clone Oboe repo to Oboe/oboe directory

This is to address comment came from: https://github.com/googlesamples/android-audio-high-performance/issues/92.

clone Oboe into Oboe's sample directory (making Oboe lib source code be part of the sample)

the directory is:
android-audio-high-performance/oboe/lib-oboe
@dturner PTAL

Many thanks for this Gerry!


Provide capability to skip creating cluster-wide resources

Signed-off-by: Tom Kerkhove<EMAIL_ADDRESS>Provide the capability to skip creating cluster-wide resources in case the Helm chart is already created in another namespace.

@krottiers Pipeline is failing because they've introduced a naming convention for roles recently.
Shall I update it in this minor version or go straight to 1.0? Not sure if people use it so might be able to justify it.

/azp run Chart CI - Azure Pipelines Environment

@krottiers Pipeline is failing because they've introduced a naming convention for roles recently.
Shall I update it in this minor version (less ideal) or go straight to 1.0 (ideal)? Not sure if people use it so might be able to justify it.
Alternative is to ignore the failure and handle it later on. (less ideal)

So if I understand correctly the Azure Devops requires a certain naming for the roles?

@tomkerkhove Straight to 1.0 is ok for me

I'll do it in a seperate!


Removed code for sliding mode

Amended obsidian.css to remove the sliding mode and vertical titles. Was thinking that perhaps a second branch be created to have both versions available?

Thank you! Especially with the 0.16 redesign coming up this is much appreciated, as it probably wouldn't be compatible anyway.


[SPARK-34584][SQL] Static partition should also follow StoreAssignmentPolicy when insert into v2 tables

What changes were proposed in this pull request?

This is a followup of https://github.com/apache/spark/pull/27597 and simply apply the fix in the v2 table insertion code path.
Why are the changes needed?

bug fix
Does this PR introduce any user-facing change?

yes, now v2 table insertion with static partitions also follow StoreAssignmentPolicy.
How was this patch tested?

moved the test from https://github.com/apache/spark/pull/27597 to the general test suite SQLInsertTestSuite, which covers DS v2, file source, and hive tables.

cc @Ngone51 @gengliangwang

Test build #135713 has started for PR 31726 at commit 6741c3e.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40295/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40295/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/40295/

Test build #135713 has finished for PR 31726 at commit 6741c3e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/135713/

Merged to master and branch-3.1.


MainBatteryVoltage

There is any way how can be read and bring to ros2 the battery info like MainBatteryVoltage provided by the roboclaw controller using the same serial session?

Yes, this can definitely done using the same serial interface. The control
interface only handles reading and setting wheel speeds, but I can add an
example feature branch that publishes MainVoltage soon
On Fri, Jul 19, 2024, 10:10 AM bogdanabaza @.***> wrote:

There is any way how can be read and bring to ros2 the battery info like
MainBatteryVoltage provided by the roboclaw controller using the same
serial session?
—
Reply to this email directly, view it on GitHub
https://github.com/dumbotics/roboclaw_hardware_interface/issues/11, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AHEJCCFW63GPVYDLXEM25NLZNEM6VAVCNFSM6AAAAABLEVMFS2VHI2DSMVQWIX3LMV43ASLTON2WKOZSGQYTSMBRHE2DOMI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I'll probably add a GPIO interface to parse battery (something like this: https://github.com/ros-controls/ros2_control/pull/436). Any other information you want me to add besides voltage?

Thank you for prompt response and availability. Another useful information could be: READ_M1_M2_CURRENT, READ_MAIN_BATT_VOLT_SET and about temperature READ_TEMP.

I locally modded the hardware interface to read battery and temp, and will use motor current to generate "effort" for each joint. There isn't an existing controller for broadcasting battery/temp (required to put the actual data into ROS), so I'm going to have to write one. Happy to do this because this is a nice feature that I'd like to have on my own robot, but just be aware this could take a few days

Just a quick update - I played around with this a little more tonight and have the basic roboclaw broadcaster created, loaded into the controller manager, and processing voltage and temperature messages from the hardware interface. Currently just spitting debug messages to terminal. I'll try to get this a little more cleaned up and publishing ROS2 messages over the next couple days...
eric@eric:~/robot_ws$ ros2 launch dumbot_bringup minimal.launch.py
[INFO] [launch]: All log files can be found below /home/eric/.ros/log/2024-08-02-00-33-01-534255-eric-200757
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ros2_control_node-1]: process started with pid [200761]
[INFO] [robot_state_publisher-2]: process started with pid [200763]
[INFO] [spawner-3]: process started with pid [200765]
[INFO] [spawner-4]: process started with pid [200767]
[INFO] [spawner-5]: process started with pid [200769]
[ros2_control_node-1] [WARN] [1722573181.834095708] [controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead.
[ros2_control_node-1] [INFO] [1722573181.834250252] [resource_manager]: Loading hardware 'roboclaw_controller'
[ros2_control_node-1] [INFO] [1722573181.834850197] [resource_manager]: Initialize hardware 'roboclaw_controller'
[ros2_control_node-1] [INFO] [1722573181.835404809] [resource_manager]: Successful initialization of hardware 'roboclaw_controller'
[ros2_control_node-1] [INFO] [1722573181.835521153] [resource_manager]: 'configure' hardware ''
[ros2_control_node-1] [INFO] [1722573181.835527184] [resource_manager]: Successful 'configure' of hardware ''
[ros2_control_node-1] [INFO] [1722573181.835531061] [resource_manager]: 'activate' hardware ''
[ros2_control_node-1] [INFO] [1722573181.835535219] [resource_manager]: Successful 'activate' of hardware ''
[ros2_control_node-1] [INFO] [1722573181.838903782] [controller_manager]: update rate is 100 Hz
[ros2_control_node-1] [INFO] [1722573181.839362717] [controller_manager]: RT kernel is recommended for better performance
[robot_state_publisher-2] [INFO] [1722573181.854038833] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-2] [INFO] [1722573181.854158704] [robot_state_publisher]: got segment base_link
[robot_state_publisher-2] [INFO] [1722573181.854167240] [robot_state_publisher]: got segment caster_left_wheel
[robot_state_publisher-2] [INFO] [1722573181.854172099] [robot_state_publisher]: got segment caster_right_wheel
[robot_state_publisher-2] [INFO] [1722573181.854176086] [robot_state_publisher]: got segment left_wheel
[robot_state_publisher-2] [INFO] [1722573181.854180113] [robot_state_publisher]: got segment right_wheel
[ros2_control_node-1] [INFO] [1722573182.091566122] [controller_manager]: Loading controller 'diffbot_base_controller'
[ros2_control_node-1] [INFO] [1722573182.105254510] [controller_manager]: Loading controller 'joint_state_broadcaster'
[ros2_control_node-1] [INFO] [1722573182.113411372] [controller_manager]: Loading controller 'roboclaw_broadcaster'
[spawner-4] [INFO] [1722573182.114490569] [spawner_diffbot_base_controller]: Loaded diffbot_base_controller
[ros2_control_node-1] Init!
[ros2_control_node-1] [INFO] [1722573182.120973488] [controller_manager]: Configuring controller 'diffbot_base_controller'
[spawner-3] [INFO] [1722573182.125571185] [spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
[ros2_control_node-1] [INFO] [1722573182.130642384] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[ros2_control_node-1] [INFO] [1722573182.130695251] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[spawner-5] [INFO] [1722573182.135670404] [spawner_roboclaw_broadcaster]: Loaded roboclaw_broadcaster
[ros2_control_node-1] [INFO] [1722573182.140887271] [controller_manager]: Configuring controller 'roboclaw_broadcaster'
[ros2_control_node-1] Cofigure!
[spawner-4] [INFO] [1722573182.171510636] [spawner_diffbot_base_controller]: Configured and activated diffbot_base_controller
[spawner-3] [INFO] [1722573182.191450546] [spawner_joint_state_broadcaster]: Configured and activated joint_state_broadcaster
[ros2_control_node-1] [INFO] [1722573182.210617774] [roboclaw_broadcaster]: Voltage: 25.500000
[ros2_control_node-1] [INFO] [1722573182.210696529] [roboclaw_broadcaster]: Temperature: 21.700000
[spawner-5] [INFO] [1722573182.211651057] [spawner_roboclaw_broadcaster]: Configured and activated roboclaw_broadcaster
[ros2_control_node-1] [INFO] [1722573182.220599046] [roboclaw_broadcaster]: Voltage: 25.500000
[ros2_control_node-1] [INFO] [1722573182.220668063] [roboclaw_broadcaster]: Temperature: 21.700000
[ros2_control_node-1] [INFO] [1722573182.230697683] [roboclaw_broadcaster]: Voltage: 25.500000
[ros2_control_node-1] [INFO] [1722573182.230800873] [roboclaw_broadcaster]: Temperature: 21.700000
[ros2_control_node-1] [INFO] [1722573182.240496378] [roboclaw_broadcaster]: Voltage: 25.500000
[ros2_control_node-1] [INFO] [1722573182.240539999] [roboclaw_broadcaster]: Temperature: 21.700000
[ros2_control_node-1] [INFO] [1722573182.250613780] [roboclaw_broadcaster]: Voltage: 25.500000
[ros2_control_node-1] [INFO] [1722573182.250677097] [roboclaw_broadcaster]: Temperature: 21.700000
[ros2_control_node-1] [INFO] [1722573182.260528599] [roboclaw_broadcaster]: Voltage: 25.500000
[ros2_control_node-1] [INFO] [1722573182.260553635] [roboclaw_broadcaster]: Temperature: 21.700000
...

@bogdanabaza can you give the 11-mainbatteryvoltage branch a shot? There is a matching branch for dumbot_bringup here: 11-mainbatteryvoltage
This add the following new/modified topics:

/roboclaw_broadcaster/battery

voltage (from main voltage reading)
percentage (from main voltage and min/max cutoff readings)

/roboclaw_broadcaster/temperature
/joint_states

now includes "effort" for each joint, which defaults to the motor current in A if the motor constants for each joint aren't provided.

Not sure if you use multiple roboclaw units or not, but the changes currently assume just one roboclaw per hardware interface.
Give this a shot and if you're happy with it, I'll clean it up and pull it into main.

colcon build warning.txt
ros2 topic echo.txt
I succeed to try branch "1-mainbatteryvoltage".
Attached are 2 txt files:

colcon.build.warning.txt - I got this when I build for the 1st time the [roboclaw_hardware_interface]
2.-ros2.topic.echo.txt - the values in static position of the robot running minimal.launch.py

Now I will continue to test with my custom launch files.
Thank you again for your work!

My plan at this point is to add the broadcaster to a new roboclaw_broadcaster repository, and add a roboclaw_ros2_control monorepo that pulls in roboclaw_serial, hardware interface, broadcaster, and bringup packages as submodules. Closing this for now, but leaving the feature branch in place until I've made these changes.
@bogdanabaza if you do run into any issues during testing, please reopen this.


Fix bug on Waypoint: Iterate Through an Array with a For Loop

Conditions needed to pass the tests weren't showing. Problem was that the variable total was passed before it could be defined. Rewrote tail to fix as per @SaintPeter's suggestion.
closes #6137

Fab!  Thanks!  Appreciate the little dance there, glad you got it figured out.


Example - mutator

can you include a mutator example (sequence with a signature suggestive of molnupiravir use) as a button? Ideally, it’d be great to have examples of each possible output.

A mutator lineage is a lineage that has a mutation (usually in the ExoN proofreading domain of Nsp14) that causes an accelerated mutation rate. I've updated the application notes tab and made a tool tip pointing to the application notes tab where there is a list of known mutator sites.
In terms of a set of lineage-defining mutations in a lineage that is associated with molnupiravir use, I can't seem to get my hands on this data. Even papers that describe the phenomenon (increase in transition: transversion ratio) only seem to plot aggregated data, then provide links to complete genome sequences. If you happen to have an example, I'll use it.

What about the data and sequences linked to from https://www.nature.com/articles/s41586-023-06649-6? ie. https://www.ebi.ac.uk/ena/browser/view/PRJEB57177?

Or use Theo Sanderson's example sequence for his earlier app?
https://movbranchapp.streamlit.app/
C2595T, T3607C, C4464T, C6525T, G9092A, G11272A, G12067A, C12784T, G14430A, C14605T, G18589A, G18712A, G20839A, A22124G, C23170T, T25735C, A26169G, C28344T, C28697T, C29098T
It gives a ratio of 20 (!), but doesn't get noted as being a likely molnupiravir-induced sequence?

On a related note, could you have a word come up either at the top or end stating if the sequence has a high ratio suggestive of it being molnupiravir induced?


Cant see Bitbuckets branchs

In the iOS app, I cant see and switch between branches on bitbucket account.
Please, add this feature. The app is really good.
Thanks in advance.

This has been implemented in #157. Closing it.

This has been implemented in #157. Closing it.


Provide major version docker tag

It would be nice to have the option to get the latest 2.x.x version, so we can do
docker pull manticoresearch/manticore:2

I'll add  on the next release.

manticore:2 now available.


Fixed swatches not rendering properly at product detail page

Short description and why it's useful

Fixed swatches not rendering properly at product detail page
Note: This issue occurs on develop branch.

Screenshots of visual changes before/after (if there are any)

Before:

After:

Which environment this relates to
Check your case. In case of any doubts please read about Release Cycle

[ ] Test version (https://test.storefrontcloud.io) - this is a new feature or improvement for Vue Storefront. I've created branch from develop branch and want to merge it back to develop
[ ] RC version (https://next.storefrontcloud.io) - this is a stabilisation fix for Release Candidate of Vue Storefront. I've created branch from release branch and want to merge it back to release
[ ] Stable version (https://demo.storefrontcloud.io) - this is an important fix for current stable version. I've created branch from hotfix or master branch and want to merge it back to hotfix

Upgrade Notes and Changelog

[x] No upgrade steps required (100% backward compatibility and no breaking changes)
[x] I've updated the Upgrade notes and Changelog on how to port existing VS sites with this new feature

IMPORTANT NOTICE - Remember to update CHANGELOG.md with description of your change
Contribution and currently important rules acceptance

[x] I read and followed contribution rules
[x] I read the TypeScript Action Plan and adjusted my PR according to it
[x] I read about Vue Storefront Modules and I am aware that every new feature should be a module

@pkarw ,
I've updated suggested changes and added comment for you question.
Can you please check it and let me know.
Thank you.

@pkarw,
I've added a condition for undefined also.
Thank you.

@pkarw, I've updated your suggested changes

@pkarw , I'm using magento2-vsbridge-indexer magento extension as an indexer

magento2-vsbridge-indexer fixed to support the labels: https://github.com/DivanteLtd/magento2-vsbridge-indexer/pull/83
we can still merge this fix in for backward compatibiltiy


out of memory

你好 ，我在用两个4090复现small版本的时候，会遇到out of memory，是为啥呢，使用的命令行是python -m torch.distributed.launch --nproc_per_node=2 train.py configs/abcnet/abcnet_clft-s_512x512_500e_irstd1k.py

RuntimeError: CUDA out of memory. Tried to allocate 512.00 MiB (GPU 1; 23.64 GiB total capacity; 20.90 GiB already allocated; 211.69 MiB free; 21.16 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
RuntimeError: CUDA out of memory. Tried to allocate 512.00 MiB (GPU 0; 23.64 GiB total capacity; 20.90 GiB already allocated; 213.69 MiB free; 21.16 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF


Missing new release for yew-agent

Problem
yew_agent is missing a new release to include yew 0.20
Steps To Reproduce
Steps to reproduce the behavior:

Upgrade codebase with yew-agent from yew 0.19 to 0.20
No updates available for yew-agent (0.1 still points to yew 0.19)
Build error:

   = note: expected enum `yew::callback::Callback<Vec<u8>>`
            found struct `yew::Callback<Vec<u8>>`
   = note: perhaps two different versions of crate `yew` are being used?

Expected behavior
yew-agent builds with yew 0.20
Environment:

Yew version: v0.20
Rust version: 1.65.0

Questionnaire

[ ] I'm interested in fixing this myself but don't know where to start
[ ] I would like to fix and I have a solution
[ ] I don't have time to fix this right now, but maybe later
[X] I would like to fix and I have a solution, but can't push new releases to crates.io

Closing because this has already been released


Replace enter character when export to csv

There some issue where exporting pdf to csv when there are "enter" character/ new line in data column

You could have used a string replace or a regex to remove those characters.


[WIP] update vtol mission tests to increase length

To enable https://github.com/PX4/Firmware/pull/8799


Fix warning Django 1.9

Fix this:
/home/tulipan/Proyectos/TiempoTurco/lib/python3.4/site-packages/django/templatetags/future.py:25: RemovedInDjango19Warning: Loading the `url` tag from the `future` library is deprecated and will be removed in Django 1.9. Use the default `url` tag instead.
  RemovedInDjango19Warning)

load url from future is required for Django 1.4, right?
I plan to remove Django 1.4 from supported versions after official support is ends.

Can this get merged now?

I am closing this for https://github.com/django-import-export/django-import-export/pull/348


completed exercises

Great work!
Did you find any difficulty in finishing this?

In 2 array exercises I faced some issues but now I think I can handle it.

Which ones? I can help you out. Ping me back at this email ID.
I am bored.
*Giridhur S *
Undergraduate Senior
Electrical Engineering
Indian Institute of Technology,Madras
On Mon, Dec 12, 2016 at 10:42 PM, kavansavla<EMAIL_ADDRESS>wrote:

In 2 array exercises I faced some issues but now I think I can handle it.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/iitmcvg/numpy_exercises/pull/2#issuecomment-266490333,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGIl2KLEWpMCV8Cn67wnzAJQI3ydfrmHks5rHYCTgaJpZM4LKx8T
.


Fix PageSelector, page selector gallery demo

Fixes: https://github.com/flutter/flutter/issues/9432

LGTM
Why the indirection through the new widget?
Also, eventually we'll have to animate this as per the material spec's idea of pagination circles.

I mostly added the new widget to make it easier to write the tests.
I think writing a  pagination circles version of this would be fun.


Cache images

Images are re-requested every animation update.
This may also be the cause of #52
My solution was to cache the images in base64 url strings,
which is implemented here: http://queens.zolmeister.com/
It looks like this:
var imgCache = {}
function cacheImages() {
  var pieces = ['wK', 'wQ', 'wR', 'wB', 'wN', 'wP', 'bK', 'bQ', 'bR', 'bB', 'bN', 'bP'];
  pieces.forEach(function(piece) {
    var img = new Image()
    img.onload = function() {
      imgCache[piece] = getBase64Image(img)
    }
    img.src = buildPieceImgSrc(piece)
  })

  function getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);
    var dataURL = canvas.toDataURL("image/png");
    return dataURL;
  }
}

function buildPieceImgSrc(piece) {
  if(imgCache[piece]) return imgCache[piece]
...

I confirm that this works.  A note to anyone trying this -- to get it working, I had to create imgCache and call cacheImages() at the top of the Window init as follows:
window['ChessBoard'] = window['ChessBoard'] || function (containerElOrId, cfg)
	{
		'use strict';
		var imgCache = {};
		cacheImages ();

I put the rest of the code near buildPieceImgSrc() per Zolmeister's helpful instructions.

FYI - Issue #113 has a neat solution for this using a data-uri


prevent_open option doesnt seem to be working for select_node function

I have a big dataset. It contains parents and child nodes. On loading the jstree, I would need to select the child nodes dynamically based on the saved state data. When the nodes are selected, the parent nodes are opening up. I tried to use the option prevent_open=true in the select_node function. Even then, it is of no help. Any suggestions?

The state object also contains which nodes should be opened. You can however "clean" the state object before applying it (so that you can remove the "core.opened" property) or you could simple call close_all once everything is done (if that fits your use case).
https://www.jstree.com/api/#/?q=state.filter&f=$.jstree.defaults.state.filter

Thank you for your reply.


Improved documentation on how to use pointer results

Overview
Created an example scene to show how to use the pointer result property:

Added a script for handling pointer events as Unity Events:

And updated pointer documentation.
Changes

Fixes: #4220  .

/azp run mrtk_docs


[WIP] Support super batch coprocessor request

close https://github.com/tikv/client-c/issues/98
TODOs:

[x] Support building batch coprocessor request
[x] Support balancing batch coprocessor request among TiFlash stores
[ ] Support batch coprocessor request on partition table
[ ] Add more unittest cases

done by https://github.com/tikv/client-c/pull/108


problem using clone with flag CLONE_VM

Windows Version
10.0.19044.3086
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>
Distro Version
No response
Other Software
No response
Repro Steps
#define _GNU_SOURCE
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

#define STACKSIZ 8192

int child_progress()
{
    int val = 0;
    while(1)
    {
        printf("child value now = %d\n", val);
        val++;
        sleep(1);

        if (val == 10) {
            break;
        }
    }
    return 0;
}

int main()
{
    char *stack = (char*)malloc(STACKSIZ);
    int flag = CLONE_VM | SIGCHLD;
    pid_t pid = clone(child_progress, stack + STACKSIZ, flag, NULL);
    int status;
    printf("child pid: %d\n", pid);
    wait(0);
    printf("child exited\n");
    return 0;
}

Expected Behavior
child pid: 5322
child value now = 0
child value now = 1
child value now = 2
child value now = 3
child value now = 4
child value now = 5
child value now = 6
child value now = 7
child value now = 8
child value now = 9
child exited

Actual Behavior
The actual result shows that the printf statement in my parentthread execute twice. The value of child pid is printed twice. It really confuses me. It seems that there's no race for resources. So it may not be resulted by race between different threads.  So does the WSL have different implementation at the bottom?
Diagnostic Logs
No response

C library functions may buffered in user memory space. And, buffering state is also cloned to the child process as-is.
Both parent and child processes may pass same cloned buffer to the kernel.
c - printf anomaly after "fork()" - Stack Overflow
https://stackoverflow.com/questions/2530663/printf-anomaly-after-fork
Terminal is normally line buffering, but WSL is piped to Windows console so I believe it is full buffering.

/dupe #10655


Some attribute names differ between disclosure and payload

Environment: interop2
Example from EHIC: "familyName" in disclosure and "lastName" in payload.

Fixed per 0.5.5 since changed sdjwt lib.

above comment


Change date validation to strict

Previous behavior: Any date from [1,31] will be accepted. Suppose the month does not have that date (e.g., 31 November 2022), then the maximum date will be taken instead (e.g., 30 November 2022).
Updated behavior: Check for the available date for each month (e.g., 31 November 2022 will result in an error).

Codecov Report
Base: 70.17% // Head: 70.19% // Increases project coverage by +0.01% :tada:

Coverage data is based on head (9509fa8) compared to base (bc0e182).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@             Coverage Diff              @@
##             master     #176      +/-   ##
============================================
+ Coverage     70.17%   70.19%   +0.01%
  Complexity      641      641
============================================
  Files           100      100
  Lines          2012     2013       +1
  Branches        221      221
============================================
+ Hits           1412     1413       +1
  Misses          531      531
  Partials         69       69

Impacted Files
Coverage Δ

src/main/java/seedu/phu/model/internship/Date.java
65.38% <100.00%> (+1.38%)
:arrow_up:

src/main/java/seedu/phu/ui/HelpWindow.java
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

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


Add School to your list

https://www.abtei-gymnasium-brauweiler.de

@BKde The first verification stage is complete: the official domain for  Abtei-Gymnasium Brauweiler is www.abtei-gymnasium-brauweiler.de, to the best of my knowledge. This is just an informational note. The pull request is still under review. The review may take some more time. I greatly appreciate your patience. Here is the proof of domain ownership: https://www.abtei-gymnasium-brauweiler.de/

@BKde Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please start requesting the licenses in about an hour, to let the changes to propagate through our system.

Thanks


support for Laravel 5.6

$ php artisan --version
Laravel Framework 5.6.3

$ composer require nwidart/laravel-menus
Using version ^1.0 for nwidart/laravel-menus
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for nwidart/laravel-menus ^1.0 -> satisfiable by nwidart/laravel-menus[1.0.0].
    - Conclusion: remove laravel/framework v5.6.3
    - Conclusion: don't install laravel/framework v5.6.3
    - nwidart/laravel-menus 1.0.0 requires illuminate/view 5.5.* -> satisfiable by illuminate/view[5.5.x-dev, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34].
    - don't install illuminate/view 5.5.x-dev|don't install laravel/framework v5.6.3
    - don't install illuminate/view v5.5.0|don't install laravel/framework v5.6.3
    - don't install illuminate/view v5.5.16|don't install laravel/framework v5.6.3
    - don't install illuminate/view v5.5.17|don't install laravel/framework v5.6.3
    - don't install illuminate/view v5.5.2|don't install laravel/framework v5.6.3
    - don't install illuminate/view v5.5.28|don't install laravel/framework v5.6.3
    - don't install illuminate/view v5.5.33|don't install laravel/framework v5.6.3
    - don't install illuminate/view v5.5.34|don't install laravel/framework v5.6.3
    - Installation request for laravel/framework (locked at v5.6.3, required as 5.6.*) -> satisfiable by laravel/framework[v5.6.3].

Installation failed, reverting ./composer.json to its original content.

Hello,
I just pushed support for laravel 5.6.
You can try with 2.0-dev.

that was quick! thx.

Cool, I'll tag this stable tomorrow. 👍


Fix and unify list styles

Minor cosmetic fixes to lists and unify their usage.
Tried to find all similar issues in the docs.

This change is

Hmm still missing official approval, @JameStark . Thanks.


QLC Style file ignored

Describe the bug
Hi i'm trying to apply a style to QLC+, however, after placing the file in the correct folder (~/.qlcplus), the style is ignored.
To Reproduce
Steps to reproduce the behavior:

Place style file in the correct folder
Open QLC+
The default style is still being used

Expected behavior
The style placed in ~/.qlcplus should be applied to the interface
Screenshots
~/.qlcplus $ pwd
/home/<user>/.qlcplus
~/.qlcplus $ ls -lah
total 32K
drwxr-xr-x  7 <user> <user> 4.0K Apr 25 20:37 .
drwx------ 87 <user> <user> 4.0K Apr 25 20:36 ..
drwxr-xr-x  2 <user> <user> 4.0K Apr 25 20:37 fixtures
drwxr-xr-x  2 <user> <user> 4.0K Apr 25 20:37 inputprofiles
drwxr-xr-x  2 <user> <user> 4.0K Apr 25 20:37 miditemplates
drwxr-xr-x  2 <user> <user> 4.0K Apr 25 20:37 modifierstemplates
-rw-r--r--  1 <user> <user> 3.9K Apr 25 20:36 qlcplusStyle.qss
drwxr-xr-x  2 <user> <user> 4.0K Apr 25 20:37 rgbscripts

The folders (fixtures, inputprofiles ...) were automatically crated by QLC+.
Desktop (please complete the following information):

OS: Artix Linux, OpenRC, 6.8.4-zen1-1.1-zen.
QLC+ Installed with the AUR : https://aur.archlinux.org/packages/qlcplus
QLC+ Version :  Q Light Controller Plus version 4.13.0 GIT
hardware setup (mandatory for audio/video issues)

Additional context
The style file I used is the one at : https://github.com/EmerickH/qlcplus-dark-theme

That theme is no longer compatible with QLC+ 4.13.0 (it is with previous versions)
Ask the author to update it or read the documentation and fix it yourself.
https://docs.qlcplus.org/v4/advanced/custom-ui-style


Remove @viewport declaration in viewport styles

In the default styles generated by MJML, we have the following block:
<!--[if !mso]><!-->
  <style type="text/css">
    @media only screen and (max-width:480px) {
      @-ms-viewport {
        width: 320px;
      }
      @viewport {
        width: 320px;
      }
    }
  </style>
  <!--<![endif]-->

This was useful to trigger a mobile viewport width on the default email client in Windows Phone 8. This was never used in any other email client as far as I know. Considering Windows Phone 8 is dead, it probably should be a good idea to remove this. Or maybe if some people are still finding this useful, have this only generated when using a special "legacy" option to generate HTML?
Here's an article (in french) about Windows Phone 8 and @viewport declaration.

This would resolve #844 as well

@hteumeuleu is right, I also remove this part from output file. It would be great to have at least CLI option something like --no-windows-phone-support which will remove this part.


Bootstrap 5

Is there any plans to make a Bootstrap 5 version ?

As far as I can see on their page the Bootstrap 5 version of AdminLTE already exists.


liblzma version

Describe the solution you'd like
I've noticed that the linuxfabrik-monitoring-plugins deb package version<PHONE_NUMBER>-1 contains liblzma.so.5.
Which version of liblzma is this?  I would like to confirm that this library file is not vulnerable to CVE-2024-3094.
https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
https://access.redhat.com/security/cve/CVE-2024-3094
https://nvd.nist.gov/vuln/detail/CVE-2024-3094
https://security-tracker.debian.org/tracker/CVE-2024-3094
https://lists.debian.org/debian-security-announce/2024/msg00057.html
Additional context
No response

All package builds use the official distros, so the version of the shipped libs will always match those on vanilla Debian/Ubuntu/RHEL. The zip and tarballs are currently (20240404) built on RHEL7. So the versions are:
repo.linuxfabrik.ch

debian 10 buster: 5.2.4
debian 11 bullseye: 5.2.5
debian 12 bookworm: 5.4.1
rhel 7: 5.2.2
rhel 8: 5.2.4
rhel 9: 5.2.5
ubuntu 18.04 bionic: 5.2.2
ubuntu 20.04 focal: 5.2.4
ubuntu 22.04 jammy: 5.2.5

download.linuxfabrik.ch:

tar: 5.2.2
zip: 5.2.2


Bug in GridFieldDeleteComponent

File: silverstripe-framework/src/Forms/GridField/GridFieldDeleteAction.php
Function: getColumnContent
Setting the 'title' of the button using FormField::setAttribute('title', ...) does not work.  The title should be passed as the third parameter of  GridField_FormAction::create which is set to false in 3.6 and 4.0

Care to PR a fix to the lowest affected version and we can merge it up

Some guidance for "PR a fix" and yep.
I assume you mean some sort of patch.  Also you probably have a document describing how you would like it, so I will read that and do it, if it exists, if not some simple guidance for a bear of little brain would be helpful

Yep, if you could submit a patch that fixes the problem it would be most appreciated.
Sure - here's our guide: https://docs.silverstripe.org/en/4/contributing/code/#step-by-step-from-forking-to-sending-the-pull-request
Basically get a copy of the affected silverstripe version checkedout with git. create a branch and then make the changes to the code that fix the problem. Commit those changes, push them up to your fork of framework and then you can create a "pull request" through github's web interface :)
Let me know if you have any issues!

It seems to work for me.

Note that the button body title (third parameter) is separate to the html 'title' attribute that this assigns. These buttons are distinct in that they have no text, but are represented by an icon alone.
This is working as intended.


Crashing when i restart a song

Describe your bug here.
Idk why but everytime i restart a song or replay it the game crashes
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
No

Finally someone who uses the bug label properly

Finally someone who uses the bug label properly

not exactly, as this very clearly isnt a global problem, i can restart and replay songs fine
this needs more information, youre not even giving the crash error

Finally someone who uses the bug label properly

not exactly, as this very clearly isnt a global problem, i can restart and replay songs fine
this needs more information, youre not even giving the crash error

I will download a new build amd see what happens


Use $crate when invoking glib_object_wrapper! in a macro

This was done elsewhere in #522.

Normally, gtk-rs is kinda supposed to support the 2015 edition "only", but I guess it's fine. Thanks for the PR!

This works with both editions though (or the CI would've failed already).


const version of proxy::invoke()

I was experimenting with this library using the sample code in the recent C++ Team Blog. I wanted to make multiple methods that operated on the same proxy so I did something like the following:
DoSomething1(const pro::proxy<Facade> &p) {
    p.invoke<dispatch1>();
}

But this won't compile because invoke() is non-const. Casting away the const works of course. Making the parameter non-const is not desirable because of the problem passing in temporary values.

Duplicate: https://github.com/microsoft/proxy/issues/22
This is by design. Because proxy does not require P::operator* to be const, where P is the type of a potential contained value, proxy::invoke() is designed to be non-const.
Regarding your scenario, if you want to "make multiple methods that operated on the same proxy",

it is encouraged to pass parameters by pointer,
you may configure the proxy to be copyable by specifying minimum_copyability in you facade definition, so that you can pass the proxy by value, like arbitrary pointers, but your proxy will not accept non-copyable pointers, like std::unique_ptr, any longer.

Thank you for you comments! Please let us know if you have any further questions or suggestions!


Bytearray expandtabs

Implementation of bytearray.expandtabs()
Any missing test cases?
Do I need to check for overflows anywhere?
One more question, I should've used the already implemented expandtabs() in Str? like it's the same concept, but just for different types, I'm thinking about creating some utility classes for stuff like iterable or some base abstract type to have the implementation of those common methods between iterables instead of implementing them multiple times in the codebase ?

Hi there! It looks like this PR might be dead, so we're closing it for now. Feel free to re-open it if you'd like to continue, or think about directing your efforts to https://github.com/beeware/briefcase or https://github.com/beeware/toga. Both of these have more active development right now. 😄


Terra account connected to our GCP account

Instructions scroll down here:
https://terra.bio/resources/getting-started/

I added the terra email address<EMAIL_ADDRESS>as a billing user and was able to change the billing account to the new one provided by cloud@illinois.
Running a workflow still seems to use a cromwell server owned by terra, not ours? We don't seem to be getting billed. It might be b/c I have not setup a "cloud environment" in Terra which would have a persistent VM and disk. Not sure why we'd need that, though.


Bundle generator runtime for async / await only if absolutely necessary

The babel toolchain has babel-preset-env, which has rich support for polyfilling things only if they are absolutely necessary.
For example, with the following .babelrc file:
{
  "presets": [
    ["env", {
      "targets": {
        "browsers": ["last 2 versions"]
      }
   }]
  ]
}

You can only polyfill the things you need to support the last 2 stable versions of every released browser.
Further, you can do:
{
  "presets": [
    ["env", {
      "targets": {
        "node": true
      }
    }]
  ]
}

Which will target the current version of node you are running. This is terrific feature.
In this instance, with "node" : true, if you run babel using the latest stable version of node, babel will not include the regenerator runtime, since async / await is natively supported in node 7.6 and higher.

I am particularly interested in async/await since the runtime for it is the heaviest out of all the polyfills, and causes the most stack trace pollution, but this concept should really apply to any ECMAScript feature that can be polyfilled.
Given the context above, my questions are  :

Is this currently possible with tsc / tsconfig.json options?
If not, is something planned?
Is there any way to de-duplicate the async/await runtime in projects that use typescript AND babel? Both compilers use their own runtimes, which is wasteful, especially in client side javascript bundles.

TypeScript does not have a fine-grained transformation management. there is however --target flag that allows you to choose an ES version to target. for instance --target ES2017 will not transform generators or async/await.
you can also use --target ESNext, this will not transform any feature that is on the standards track,  and then pass the output into babel to do a more fine-grained transformation.

Automatically closing this issue for housekeeping purposes. The issue labels indicate that it is unactionable at the moment or has already been addressed.


The directory folder (WIndows.Forms) name is misspelled

Describe the bug
The directory folder (WIndows.Forms) has a minor spelling mistake. Its using the wrong character casing in the folder name. The first (I or i) character should be lowercase instead of an uppercase. I did a quick search on the repository for the exact associated path to check for any affected paths that may have been linked and it appears they are all otherwise in the right order.
The casing maybe not always recognized properly as the exact name and may cause future issues linking references.

Example:

Currently:
WIndows.Forms
Fixed:
Windows.Forms
What code is involved
It appears just the folder name is affected by the misspelling. ( Vanara/WIndows.Forms). I was unable to find any further files that may have been affected when referencing the library.

This has bugged me for a while, but I had no reason to fix it since it wasn't messing anything up. But, it appears there are other OCD people in the world like me! :) I hope this relieves some anxiety when using this project.


Navigating yo menu with arrow keys throws an error

Apologies if this is inappropriate to post here, but I'm trying to learn me some Yeoman. I've got the environment all installed. When I try to use my arrow keys to pick a generator, this error gets thrown:
/usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/node_modules/rx/dist/rx.all.js:9229         throw e;               ^ ReferenceError: parent is not defined     at AnonymousObserver._onNext (/usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/node_modules/rx/dist/rx.all.js:4259:63)     at AnonymousObserver.Rx.AnonymousObserver.AnonymousObserver.next (/usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/node_modules/rx/dist/rx.all.js:1863:12)     at AnonymousObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (/usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/node_modules/rx/dist/rx.all.js:1795:35)     at AutoDetachObserverPrototype.next (/usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/node_modules/rx/dist/rx.all.js:9226:23)     at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onNext (/usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/node_modules/rx/dist/rx.all.js:1795:35)     at Subject.Rx.Subject.addProperties.onNext
and FYI, I've tried uninstalling and reinstalling node, yo, etc.

@mattinteractive This is no longer showing up as an issue for me locally in yo 1.3.3. Can we close this or are you still running into this problem?

@mattinteractive This is no longer showing up as an issue for me locally in yo 1.3.3. Can we close this or are you still running into this problem?

FYI - Number keys will allow menu navigation, even if the arrow keys don't work.


Can't identify ansible_user

While running ansible-playbook main.yml next message appears:
fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'ansible_user' is undefined. 'ansible_user' is undefined\n\nThe error appears to be in '/home/javalen/code/internet-pi/tasks/docker.yml': line 58, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: \"Ensure user is added to the docker group: {{ ansible_user }}\"\n  ^ here\nWe could be wrong, but this one looks like it might be an issue with\nmissing quotes. Always quote template expression brackets when they\nstart a value. For instance:\n\n    with_items:\n      - {{ foo }}\n\nShould be written as:\n\n    with_items:\n      - \"{{ foo }}\"\n"}
init.yml file contents:
raspberrypi ansible_user=javalen
I'm running using ssh from another pc.

Add the user to the docker group:
sudo usermod -aG docker $USER
Then, you have to "update" the docker group with:
newgrp docker


Fix rate limit and handle retryable errors

If logs are queued while the AWS write request is in flight, they're immediately sent to AWS after the original write finishes, irrespective of the write interval. This PR addresses this issue, and adds "retryable" error handling. It proved very difficult to implement correct retry behavior using an onError method, so I baked it in. The write interval is respected for retries as well. With a properly configured write interval, this PR should solve AWS rate limit issues (5 requests per stream per second) without loss of logs.

Thanks @xdissent , looks great!


wallet.wpmix.net: connect wallet doesn't work

https://github.com/swaponline/MultiCurrencyWallet/commit/0ae58d24aad0fa6af9032d03718a3b24fa296227