FCAlertView close on touch outside when should not.

Hi, this is my code but first a short explanation:
The alert view dismiss on outside touch no matter if I setting "NO" and I need the alert view to dismiss just when the background task have done! I guess this is a mistake in the alertView because the alert view dismiss when should not. Sorry for the english, I hope you can fix it, thank you and have a nice day.
[alert setDismissOnOutsideTouch:NO];   [alert showAlertWithTitle:@"Sending, please wait..." withSubtitle:nil withCustomImage:nil withDoneButtonTitle:nil andButtons:nil];  dispatch_queue_t queue = dispatch_queue_create("My queue", NULL);  dispatch_async(queue, ^{          //code to be executed in the background          NSLog(@"Inside background task");          [self sendDataToServer:@"POST"];          dispatch_async(dispatch_get_main_queue(), ^{          //code to be executed on the main thread when background task is finished          NSLog(@"task done");          [alert dismissAlertView]; });

Hi @andres9394
Thank you for using FCAlertView. I ran your code through my example app and it seems to be working fine. Is the issue that when the user touches OUTSIDE of the alert box, it dismisses? Would like it not dismiss at all even I press the buttons? Also, if you are adding any other customizations to the FCAlertView, please paste the code here so I can take a closer look.

Has this issue been resolved?

Sorry. No, this issue has not been resolved. What I want is that when I touched outside of the alert box, it no not dismisses. The alert box should dismiss only if I touch the cancel button.

@andres9394 I took a second look at your code, I think what's happening is that there's no button in your alert and there is no timer set to dismiss it. This automatically triggers [alert setDismissOnOutsideTouch:YES]; However, in the next version, you'll be able to bypass it.

This has been added to FCAlertView V1.4.0. Please try adding this to override the forced close:
alert.overrideForcedDismiss = 1;

Thanks for using FCAlertView!


JsonObjectAttribute.Id - What can it be used for?

The documentation simply states that it is inherited via the Container object. But it does not say what we can or cannot set this to.
For example, what might be the side-effects of doing this:
[JsonObject( "fooObject", **Id = "hello"** )]
public class FooObject {

Am I supposed to use the Id property to point to a property/field name that behaves as the object's "Id" ? Or should this be set to a literal value?

It was used by JsonSchemaGenerator but that is deprecated.

Is it used by the Json.NET Schema currently? See this SO answer


Announce headlines agenda (pre ticket teaser)

What
Why
Who needs to work on this
Who needs to review this
Done when

[ ] Thing to do

blog to announce keynotes
and also consider looking at Kam's blog

Ticketing cards - visual pictures
one-pager for line managers to allow staff to attend


Allow use on Python 3.7

I'd love to switch from sphinx_tabs to sphinx-inline-tabs but the hard requirement on Python >= 3.8 make it impossible to do so: my project works with Python >= 3.7, which is still getting security fixes until 2023-06-27.
So in the same spirit as #24, is there any possibility to have Python requirement relaxed to 3.7 as a minimum? 🙂

Why do you need to generate the docs using Python 3.7?

Why do you need to generate the docs using Python 3.7?

True. I don't need to generate the docs in Python 3.7.
But my all my Sphinx dependencies for doc building are set in my pyproject.toml, which also specify the minimal Python version to 3.7: https://github.com/kdeldycke/meta-package-manager/blob/main/pyproject.toml#L92 . Hence the conflict.
This is really practical as I can propose to the developer a way to build docs locally and test them, as straightforward as:
$ poetry install
$ poetry run sphinx-build -b html ./docs ./docs/html

Also, having all doc-related dependencies in pyproject.toml allow me to:

Let dependabot manage and notify me of new releases
Simplify my doc building workflow as I need to locally install my project for sphinx-click extension to generate the CLI documentation.

Since I created this bug, I moved to sphinx-design to render tabs, so I don't need sphinx-inline-tabs anymore. Let's close this issue to keep the backlog lean.


"SPN" should likely be changed to "SP" in most cases

Recent ballot de emphasized SPN to SP fervor bundle with #832 in Task 8

Add final SP SPN recommendations to white space ticket.


'Unknown function: tern#Enable' weird problem

This error occurs when I open one of my js file on Mac, related issue is
https://github.com/ternjs/tern_for_vim/issues/119
https://github.com/ternjs/tern_for_vim/issues/76
It will be more friendly if we provide the info in README.md

fix by reinstall neovim with python(3) support;
ref: https://github.com/neovim/neovim/issues/4470
and https://neovim.io/doc/user/provider.html

Thank you very much. I will look into this issue.


Jenkins: testChangesFeedWithPurgedDoc cause native crash

http://mobile.jenkins.couchbase.com/job/couchbase-lite-android-build/436/console
http://mobile.jenkins.couchbase.com/job/couchbase-lite-android-build/436/artifact/logcat.txt/*view*/
Detailed Log:
https://gist.github.com/hideki/e8bb68642c0d3fa7b516

I have tried to reproduce this issue with using Android stock emulator with API 19 and ARM setting. However it is not reproducible.

NOTE:
Build: http://mobile.jenkins.couchbase.com/job/couchbase-lite-android-build/444/artifact/logcat.txt/view/
testChangesFeedWithPurgedDoc succeeded.


[Constantinople] Add Block Reward Adjustment (EIP1234)

Pull Request Test Coverage Report for Build 96

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

Totals

Change from base Build 94:
0.0%

Covered Lines:
127

Relevant Lines:
131

💛  - Coveralls


fix: generate pages/index/**

Fix #2296
When there is existing nested component in pages/index/, remove duplicate / in route path and push a route for generating root index.html

Codecov Report

Merging #2305 into dev will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##              dev    #2305      +/-   ##
==========================================
+ Coverage   98.36%   98.36%   +<.01%
==========================================
  Files          15       15
  Lines         980      981       +1
==========================================
+ Hits          964      965       +1
  Misses         16       16

Impacted Files
Coverage Δ

lib/common/utils.js
100% <100%> (ø)
:arrow_up:

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 32e67c7...9e36d2a. Read the comment docs.


geographic grouping for v2 search results

Context
Follows #249
Part of #250
Wireframe: https://www.figma.com/design/UsbyOrgtBnLMyyqlfqIOqm/PDAP-Theming?node-id=6076-734&t=axBdWzOC8o64cX1C-0
This is something that didn't make it into the requirements, but is now being added to the wireframe.
We have agencies.jurisdiction_type, with local county state federal. The other jurisdiction types school military tribal transit port can be considered variations of local too.
Requirements
Front end

[ ] for all searches, whether locality county state or all/federal is selected, we should first show results from the selected jurisdiction type first.
[ ] then, we should show sources with "downstream" (more local) levels.
[ ] then, we should show sources from "upstream" levels.

Example: if Pittsburgh, PA is selected we would first show locality-level sources from Pittsburgh, then county-level sources for Allegheny County, and state-level sources for Pennsylvania. We wouldn't show other local results from the same county and state.
Example: if Allegheny County, PA is selected we would first show county-level sources from Allegheny County, then local sources from anywhere in the county. Grouping them this way should help people "drill down"
Back end

[x] maybe: adjust the endpoint to show sources from "broader" jurisdiction types as described. It's possible the front end can just make use of the existing endpoints.

maybe: adjust the endpoint to show sources from "broader" jurisdiction types as described. It's possible the front end can just make use of the existing endpoints.

@josh-chamberlain @maxachis I would prefer this, to avoid the kind of data manipulation client-side that we were doing with the previous search results page. I understand it because I wrote it, but my guess is that it's pretty opaque code if someone else were to need to debug it or something.
So if the server could return something like this, it would be ideal from my perspective:
{
  count: <number>,
  state: {
    count: <number>,
    results: [<data-source-record>]
  },
  county: {
    count: <number>,
    results: [<data-source-record>]
  },
  locality: {
    count: <number>,
    results: [<data-source-record>]
  },
}

My hypothesis is that this can be done more succinctly and with better performance on the server, but if that's not the case, we can always re-shape the data on the client, no problem.

@josh-chamberlain @maxachis Update on my comment above:
I actually can't filter this data on the client currently. There is no way to do it, as I have no means of distinguishing between which sources returned by the search location and record type endpoint are locality-, county-, or state-based.
So either I need a record_location_type property returned from the API, or the data to be returned from the API in the shape that I'm describing above.

@joshuagraber This is perfectly doable! I can work on addressing this!

@maxachis Attempting to test locally this this morning, but I'm getting the following errors from app.py, which appears to be an issue with the bump to psycopg3?
  File "/Users/grabes/code/pdap/data-sources-app-v2/app.py", line 7, in <module>
    from resources.Callback import namespace_auth
  File "/Users/grabes/code/pdap/data-sources-app-v2/resources/Callback.py", line 2, in <module>
    from middleware.callback_primary_logic import (
  File "/Users/grabes/code/pdap/data-sources-app-v2/middleware/callback_primary_logic.py", line 7, in <module>
    from database_client.database_client import DatabaseClient
  File "/Users/grabes/code/pdap/data-sources-app-v2/database_client/database_client.py", line 9, in <module>
    import psycopg
  File "/Users/grabes/code/pdap/data-sources-app-v2/venv/lib/python3.11/site-packages/psycopg/__init__.py", line 9, in <module>
    from . import pq  # noqa: F401 import early to stabilize side effects
    ^^^^^^^^^^^^^^^^
  File "/Users/grabes/code/pdap/data-sources-app-v2/venv/lib/python3.11/site-packages/psycopg/pq/__init__.py", line 118, in <module>
    import_from_libpq()
  File "/Users/grabes/code/pdap/data-sources-app-v2/venv/lib/python3.11/site-packages/psycopg/pq/__init__.py", line 110, in import_from_libpq
    raise ImportError(
ImportError: no pq wrapper available.
Attempts made:
- couldn't import psycopg 'c' implementation: No module named 'psycopg_c'
- couldn't import psycopg 'binary' implementation: No module named 'psycopg_binary'
- couldn't import psycopg 'python' implementation: dlopen(/Users/grabes/opt/anaconda3/lib/libpq.dylib, 0x0006): tried: '/Users/grabes/opt/anaconda3/lib/libpq.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/grabes/opt/anaconda3/lib/libpq.dylib' (no such file), '/Users/grabes/opt/anaconda3/lib/libpq.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')), '/Users/grabes/opt/anaconda3/lib/libpq.5.12.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/grabes/opt/anaconda3/lib/libpq.5.12.dylib' (no such file), '/Users/grabes/opt/anaconda3/lib/libpq.5.12.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64'))

Hey @maxachis One very minor thing I'm noticing here. I'm no longer getting the state field returned for locality results. That's useful for displaying location in the UI, do you think we could bring it back?

Hey @maxachis One very minor thing I'm noticing here. I'm no longer getting the state field returned for locality results. That's useful for displaying location in the UI, do you think we could bring it back?

Can do! To confirm: you mean the full name of the state as opposed to state_iso (which is, at least in my code, still present)?

Can do! To confirm: you mean the full name of the state as opposed to state_iso (which is, at least in my code, still present)?

Ah, yeah, state_iso will work, sorry I thought I had seen state there previously. Thanks!

@josh-chamberlain @joshuagraber Is there anything remaining for this issue to be considered complete?


Add Estonian locale (et-EE) to isMobilePhone validator

The validator checks for:
a) If the country code is +372 (+ and whole country code optional)
b) Number starts with 5, 81, 82, 83 or 84
c) The number contains 7 to 8 numbers

Thanks. Can you update the README and add a test case?

Thanks!


Updated gogs.css - monospace font for hash

Updated gogs.css to set the font-family of .sha .label in the #repo-files-table to a monospace font to make it look nicer so the label boxes have the same width and don't differ by a few pixels.

oooops... didn't notice css files were less generated. Closing...


entering value in touchscreen causes submit event

check whether only occurs in enketo-core and not in enketo-express (likely in which case, not a problem).

also in EE

also happens for the select pulldowns in last group (upon Enter press)


Allow animations in projects to be classes.

Really useful for ".py projects"

Umm... couldn't it always do this? I mean, I've been doing BiblioPixelAnimations.matrix.MyAnimationClass forever in projects.

No, you've been using the string 'BiblioPixelAnimations.matrix.MyAnimationClass', not the actual class.  :-D
This is for ".py project files" which I don't think you've used - see this line to see the difference.  You can't even make this happen in JSON.

Oh... gotcha. Cool. +1


Add documentation to CheckBox

CheckBox was missing some theme documentation and some of the wording was inconsistent with the other descriptions.
Not sure if using is checked and is disabled is too verbose, but it seemed consistent with the writing guidelines.
Repost because I messed up the first one.

Thanks!


Fix Chainer CIs

py27and37.gpu needed to lower the concurrency to 20 threads, seems that some change in somewhere might have changed the order in which some tests were executed causing out-of-memory errors.
for onnxchainer.py37.gpu cupy v8 was being installed, setting <8.0.0 in the requirements was enough.
chainermn now installs cupy in the same way as the chainer tests instead of using a prebuilt wheel that we deleted. We need to push this before to make cupy aware of this and push the new image
AppVeyor error
  Downloading https://files.pythonhosted.org/packages/f1/2c/717bdd12404c73ec0c8c734c81a0bad7048866bc36a88a1b69fd52b01c07/numpy-1.19.0.zip (7.3MB)
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\appveyor\AppData\Local\Temp\1\pip-build-9xk8iqp8\numpy\setup.py", line 30, in <module>
        raise RuntimeError("Python version >= 3.6 required.")
    RuntimeError: Python version >= 3.6 required.

    ----------------------------------------

Limiting numpy fails with mock next, since newest mock is not supported by python 3.5Using another python version results in errors when comparing arrays due to datatype mismatches.
Windows?

LGTM!


Cannot use host with port specifier

When I try to use FlexMeasuresClient with a <host>:<port> combination:
    client = FlexMeasuresClient(
        host = '<IP_ADDRESS>:5000',
        email = email,
        password = password,
        ssl = False,
    )

then I get an error trying to get an access token:
    token = await client.get_access_token()

This results in:
Traceback (most recent call last):
  File "./client.py", line 23, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.9/asyncio/base_events.py", line 647, in run_until_complete
    return future.result()
  File "./client.py", line 21, in main
    token = await client.get_access_token()
  File "/.../lib/python3.9/site-packages/flexmeasures_client/client.py", line 234, in get_access_token
    response, _status = await self.request(
  File "/.../lib/python3.9/site-packages/flexmeasures_client/client.py", line 114, in request
    url = self.build_url(uri, path=path)
  File "/.../lib/python3.9/site-packages/flexmeasures_client/client.py", line 227, in build_url
    url = URL.build(scheme=self.scheme, host=self.host, path=path).join(
  File "/.../lib/python3.9/site-packages/yarl/_url.py", line 385, in build
    netloc = cls._make_netloc(
  File "/.../lib/python3.9/site-packages/yarl/_url.py", line 1057, in _make_netloc
    ret = cls._encode_host(host)
  File "/.../lib/python3.9/site-packages/yarl/_url.py", line 1038, in _encode_host
    _host_validate(host)
  File "/.../lib/python3.9/site-packages/yarl/_url.py", line 1607, in _host_validate
    raise ValueError(
ValueError: Host '<IP_ADDRESS>:5000' cannot contain ':' (at position 12)
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7fe0a04751f0>

Looks like a regression (maybe through newer yarl version?) , as we used host: str = "localhost:5000" as default setting ourselves.
We should:

add self.port as a variable
in the  __post_init__, extract the potential port from the host parameter with regex

Happy to see a PR.
Our attention is currently not on this client, but will be in the near future again - we'll need it in some projects.

I understand this is not a priority for you, but it breaks my V2G Liberty setup. So I would appreciate if you could take a look at the PR.

First of all, I cannot reproduce this locally:
(fm-3.10) nicolas at pop-os in ~/workspace/seita/flexmeasures-client/src on main (1 changed, 1 untracked)
± python
Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from flexmeasures_client import FlexMeasuresClient
>>> client =<EMAIL_ADDRESS>password="blupp", host="<IP_ADDRESS>:5000", ssl=False)
>>> client
FlexMeasuresClient(password='blupp'<EMAIL_ADDRESS>host='<IP_ADDRESS>:5000', ssl=False, api_version='v3_0', path='/api/v3_0/', access_token=None, max_polling_steps=10, polling_timeout=200.0, request_timeout=20.0, polling_interval=10.0, session=None)
>>>
(fm-3.10) nicolas at pop-os in ~/workspace/seita/flexmeasures-client/src on main (1 changed, 1 untracked)
± pip list | grep yarl
WARNING: Ignoring invalid distribution -ypy (/home/nicolas/envs/fm-3.10/lib/python3.10/site-packages)
yarl                          1.13.1

Can you see which version of yarl you are using?
How did you install it? I am checking the config of this repo, but it doesn't seem to be explicitly mentioned, like in install_requires. I had to install it myself...

I used pip install flexmeasures-client.
However, I could also reproduce it by using the source code.
I extracted the body of build_url, which also reproduces it.


Week 6

images
api

2.7/3
Graded by Kian Pasokhi

Completed the images, did green blue grey and red scale. He also printed them so we can easily see his work at the bottom. He also showed his ASCII conversion. He skipped lines and used the conversion table. For API he did a burger API where it shows burger restaurants and their menus.


chore(deps): upgrade compiler dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-compiler-dependencies-k8s-30-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 4431

Questions ?
Please refer to the Backport tool documentation


Use builder for DropdownMenuButton

DropdownMenuButton should use (or allow use of) ListView.builder rather than ListView's default constructor. I have a DropdownMenuButton that displays a dynamic amount of items and I'm running into performance issues when there is a large amount of items. Maybe a dropdown menu isn't the right choice if you have many items to display, but I think it would still be a good idea to perhaps provide a DropdownMenuButton.builder constructor like ListView.

can I work on this?


Unable to add Nuget.org in visual studio 2019 for mac

Hi Team,
I am trying to add Nuget packages for ios application development but unable to add any nuget packages from Nuget.org due to the below error message. I have attached the screen shots here for your reference.
Could you please check and let me know the issue here?
ios version: macOS Mojave 10.14.6
Visual studio version: visual studio community (preview) for mac
Nuget Version: <IP_ADDRESS>88

Thanks Joel and nkolev. I have sent the attached results based on joel's input to<EMAIL_ADDRESS>Could you please check and let me know the solution for the same. Thanks in advance.

I've responded to your email. In short, it looks like a connectivity issue specific to Visual Studio for Mac because the ping and trace route results indicate a successful connection. As @nkolev92 mentioned, I'd recommend reaching out to Visual Studio for Mac:
https://docs.microsoft.com/en-us/visualstudio/mac/report-a-problem?view=vsmac-2019


Make searching filenames for matches optional

Previously PyWhat always added the name of the file to the search. This PR makes it optional, so if someone wants PyWhat to also search filenames for any matches, they can now do it with -if command.

@amadejpapez you can merge if you want!! normally in industry ✨  when ew approve something, its up to you to merge it as you may want to add some things last minute etc :)


Chat object has no field online_member_count

Chat object does not have field online_member_count. Code fails here: link.
The issue happens on the call client.api.open_chat(chat_id)

Yes, you're right. This update will not be handled anymore


Support use_new_environment on test metadata, and fix some bugs.

See commits for details

Looks OK/harmless to me, though I would split the middle commit in two (and document more what's being done in the commit message).


Figure out root cause of spikes in control lag time

This was the main issue I experienced at the Feb 18th track day that prevented me from reliably driving the car around the track for training. It always manifests as an intermittent problem but I am also able to observe it at home, although less frequently than I saw it at the track day.
I'm running a local donkey server over wifi, so 4G latency is not a factor here. On wifi, I'm frequently seeing lag times spike above 1s, sometimes as long as 30 or more seconds. The clues that I've seen so far are:

This seems to happen more frequently in areas of high network congestion (like the track day when everyone was running nearby).
It happens on my home wifi network at least once per minute while driving the donkey car, to varying levels of severity.
I tried an alternate router at home on a non-standard wifi channel, and was not able to reproduce the delays.

Here's a sample console log from the pi that shows the spikes. Lag time of ~0.06 is about normal on my home network.
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.06897997856140137
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.07510542869567871
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.06453394889831543
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.759141206741333
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.05977487564086914
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.0692141056060791
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.06003284454345703
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.16736602783203125
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.06820440292358398
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.0678567886352539
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.12179088592529297
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.05697226524353027
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.0699162483215332
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.06665158271789551
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.17603182792663574
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 1.0047976970672607
throttle update: 0.0
pulse: 370
angle: 0.0   throttle: 0.0
{"angle": "0", "throttle": "0"}
vehicle <> server: request lag: 0.0619354248046875
throttle update: 0.0
pulse: 370

Thanks @alanwells. I remember that the trace shows this hangs on the connection creation. Maybe reusing the connection would prevent these large lags. The requests module provides this functionality with sessions.  http://docs.python-requests.org/en/master/user/advanced/

Pull request #47 adds a potential fix and lag logging.

@alanwells could you try #47 and let me know if it solves the issues you're having? Once confirmed I'll merge to master.

@wroscoe I just tested the latest code on the dev branch. There's a new issue now - throttle and steering controls are reseting back to 0 even with consistent input from the controlling page on the iOS device. The presence of this issue makes it difficult to gauge whether the previous lag was eliminated, as I can't get consistent steering/throttle control long enough to see if the car response is lagging relative to my control input.
This issue happens when I try to control the device from a remote (iPad or iPhone), but does not occur when I control the device from a browser on the laptop that is running the donkey server.

Also, it appears to be unrelated to wifi signal strength - the video above was taken when laptop running the server, iOS control device, and the pi were all within 5 feet of my router.

Thanks for trying this @alanwells I'm unable to replicate this but it looks like the bug is on the server. The server should be sending continuous  values shown as the "Drive:" line in the output. In your output the values coming from the web input are switching between 1/-1 and zero. I'll post here if I think of anything that could be causing this.

@wroscoe I just tried again and I'm not able to reproduce the resetting to zero issue from this morning. Thinking back on it, I had my PS4 gamepad sitting on my desk and connected to my laptop via bluetooth at the same time I was testing this morning. Is it possible the resetting we saw was a result of competing control inputs (on my laptop, the gamepad was not being held and could have been sending 0 angle, 0 throttle to the open vehicle browser window on the laptop, while I was sending non-zero throttle and steering inputs via the browser page on the iOS device)?

@alanwells that is possible. I don't have a game pad controller so I can't test it. I did just do a fairly long test drive and can say that the connection fix seems pretty robust. Here are my lag times running with a Mifi and the timout set to .2 seconds. I'm not sure how the lag ever gets above .2 but --''/-- (or whatever that symbol is)

@wroscoe interesting. I'm planning to do some more in depth testing tomorrow morning. I'll let you know what I find.

@wroscoe Here's what I found in testing this morning (running dev branch):

I was able to repro the resetting to zero issue. It happened again when I had a control page open on both my laptop browser and on my iOS device at the same time. As soon as I closed the browser page on the laptop, the problem stopped. I think it was a case of competing control signals, and this morning it happened without a gamepad connected to my laptop so I don't think that's the cause.

After the above issue was addressed by closing the browser issue, I was able to drive the car successfully without any noticeable loss of control on my hotspot. Either the fixes you put in place on the dev branch are working, or the source of my control issues are coming from some other intermittent factor that was present during my testing. I've never been able to reliably drive my car as long as I did this morning without control issues, so I'm inclined to believe that the changes in the dev branch helped.

For comparison to your stats, I also logged my lag times on my home router and my hotspot. I had my timeout set to 0.2 as well. These were measured with the routers positioned within a few feet of the pi and my laptop:

Mean lag time on home router (TP-Link Archer C7): 0.030s
Mean lag time on hotspot: 0.033s

There's a minor increase in lag time on the hotspot, but probably not enough to be concerned about. When I moved the hotspot and pi about 30 ft and two walls away from my laptop, mean lag increased to 0.037s. Again, probably not enough to be concerned about at this point.
I also measured the failure rates of connections (connection errors and read timeouts). Interestingly, the hotspot had a significantly lower failure rate than my home router:

Connection failure rate on TP-Link home router: 7.83%
Connection failure rate on hotspot: 1.05%

This surprised me, but it might be because of other traffic on my home network (between computers and mobile devices we have about 10 active devices on our home network, vs just the pi and laptop on the hotspot).
Anyway, I think you can close this issue.

@alanwells That makes sense because I added a javascript function to repeatedly send stop signals to the car when the joystick was not moving to keep the car from driving off if it missed the one stop command. This may not be needed now that the throttle is reduced if the  connection is lost. This also highlights the fact that the web app is not safe or multiple users to use at the same time.
It's nice to see the low lag times when using a low network. My ~.1 lag times were likely due to going through the internet to AWS.
Closing this issue.


KeepKey localisation files needs updating

in the most recent firmware for KeepKey the message for Transaction confirmation (on the KeepKey) has changed.
The MultiBit HD text needs changing accordingly

I have updated the English localisation files so that instead of saying:
TRANSACTION SUMMARY

Total of 3.34604 mBTC leaving your wallet, and a fee of 0.10000 mBTC

it now say:
TRANSACTION
Do you want to send 0.00334604 BTC from your wallet ? THis includes a transaction fee of 0.0001 BTC.

This matches what the KeepKey 1.03 firmware states.
The localisation files have been updated on crowdin.net for localisers to look at.
Awaiting review and closing

Verified working. Closing.


How to change color of name and time next to bubble

I am sorry but it is basic question.
Though I read reference, I didn't get below question.
I want to change color of name and time next to bubble, how can I change them ?
I think there is property in the class.

Best Regards,

Did you find that property?


[Exam] Start and Final Page Component

Checklist

[X] I tested all changes and all related features with different users (student, tutor, instructor, admin) locally
[X] Client: I documented the TypeScript code using JSDoc style.
[X] Client: I added multiple screenshots/screencasts of my UI changes
[X] Client: I translated all the newly inserted strings into German and English

Motivation and Context

The exam consists of a starting page (shown before exam has actually started) and a final page (shown after exam has started).
Resolves #1578 #1582
Description

I created a component for displaying the general information and confirmation text produced with the markdown editor. As well, I added a checkbox for confirmation, which if not checked disables the start exam button e.g..
Hint: The title would usually be displayed above the general information text, however it is not possible to do so yet (thus just imagine it were there for now)
Steps for Testing

has to be tested locally until exams can be created

Checkout this branch locally
Connect to the Artemis database with tablePlus (or whichever tool you prefer)
Create a few exams and assign them to a course to play around with
By default, the startView will be shown (for testing, you can change this in the code by setting the input boolean of the exam-participation.component.html to false in [startView]="")
5.1. Check that the submit button (Start Exam and Summary) is disabled, when the confirmation box is not checked
5.2. Check that the submit button (Start Exam) turns enabled, when the exam has started and the confirmation box is checked
5.2. Check that the submit button (Start Exam) stays disabled, when the exam has started and the confirmation box is not checked
Check whether text entered using the markdown editor is displayed correctly + centered

Hint: "Start Exam" and "Summary Button" to be used and implemented in further development
Screenshots

After clicking on an exam (e.g. like here) (check out #1628 )....

...the following should render (the text depends on the value you gave the exam for startText etc.):
START view

This is what it will look like with title

FINAL view

I inserted the title now, so it should be visible too.


This app can't run on your PC

When trying to run handwrite, after having installed all the required other things, I get the message:
"This app can't run on your PC"
i.e. as a Blue Windows 10 information window.
Since there is no .exe file, I can't set to run in configuration mode.
Please help.

@GitHubKitten, handwrite is just a CLI tool and isn't packaged as an application. You can't run it as any other application on windows.

Thanks. I am running it from cmd prompt. But it's not working. Here is the cmd prompt messages (please note I am not a developer). Can you see what the issue is and how to fix it?
Directory of c:\Users\Name\AppData\Local\Programs\Python\Python311\Scripts
28/04/2024  18:46              .
28/04/2024  18:46              ..
28/04/2024  13:08           108,420 f2py.exe
28/04/2024  18:46           108,416 handwrite.exe
28/04/2024  13:08           108,425 pip.exe
28/04/2024  13:08           108,425 pip3.11.exe
28/04/2024  13:08           108,425 pip3.exe
5 File(s)        542,111 bytes
2 Dir(s)  27,818,192,896 bytes free
c:\Users\Name\AppData\Local\Programs\Python\Python311\Scripts>handwrite.exe
usage: handwrite [-h] [--directory DIRECTORY] [--config CONFIG] [--filename FILENAME] [--family FAMILY] [--style STYLE] input_path output_directory
handwrite: error: the following arguments are required: input_path, output_directory
c:\Users\Name\AppData\Local\Programs\Python\Python311\Scripts>handwrite Y:\AI\Test\handwrite.jpg Y:\AI\Test
[<EMAIL_ADDRESS>global loadsave.cpp:248 cv::findDecoder imread_('Y:\AI\Test\handwrite.jpg'): can't open/read file: check file path/integrity
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in run_code
File "c:\Users\Name\AppData\Local\Programs\Python\Python311\Scripts\handwrite.exe_main.py", line 7, in
File "C:\Users\Name\AppData\Local\Programs\Python\Python311\Lib\site-packages\handwrite\cli.py", line 56, in main
converters(
File "C:\Users\Name\AppData\Local\Programs\Python\Python311\Lib\site-packages\handwrite\cli.py", line 34, in converters
run(sheet, output_directory, directory, config, metadata)
File "C:\Users\Name\AppData\Local\Programs\Python\Python311\Lib\site-packages\handwrite\cli.py", line 12, in run
SHEETtoPNG().convert(sheet, characters_dir, config)
File "C:\Users\Name\AppData\Local\Programs\Python\Python311\Lib\site-packages\handwrite\sheettopng.py", line 44, in convert
characters = self.detect_characters(
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Name\AppData\Local\Programs\Python\Python311\Lib\site-packages\handwrite\sheettopng.py", line 81, in detect_characters
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:196: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
c:\Users\Name\AppData\Local\Programs\Python\Python311\Scripts>

Looks like you don't have fontforge installed correctly, make sure you enable scripting when installing. If I remember correctly, it comes up as an option when installing.


Build: Initial mypy integration

Goal is to start using mypy to statically check our source code:

Add mypy configuration: start by just checking tuf/api, and ignoring securesystemslib imports
Use mypy in tox "lint" environment.
Refactor tox lint env a little
Use all cores for pylint to make it faster (pylint is the slowest part of the lint by far)
Fix all kinds of typing issues in tuf/api/ (either actual issues or just things that prevent mypy from doing its job)

How mypy is used after this PR:

CI will run it as part of lint
developers can run tox -e lint or just mypy

Fixes #1335

rebased on develop

rebased on develop, added fix for an issue in new code

Do you think stricter options should be tried next? For example "disallow-untyped-defs" on api/metadata.py.
I see that now this results to errors coming from formats.py and exceptions.py.

We probably should start experimenting with stricter options: once it's all set up I imagine it's not hard to maintain... But probably the most valuable improvement would be to gradually start supporting securesystemslib modules.
On the specific cases you mentioned: formats.py should go IMO: #1384. Fixing exceptions.py should be a few minutes job.


Move from psql exec to DBI?

As mentioned in #94
Not sure if this gains us too much - since we need to have postgres permissions to access the data directory we can almost certainly expect that psql exists on the server and allows us to talk to the database.
If we move to DBI we need to make sure that it behaves identically to psql when it comes to defaults (socket discovery, .pgpass parsing, etc.) - not sure if all this functionality is present in libpq and wired up correctly in the DBI driver.
What I'd certainly like to see is moving away from implied defaults that only can be changed awkwardly (e.g. adding --port to psql cmdline options instead of it being a discrete setting that gets interpolated correctly by backrest)
If we had that, we could identify databases by a port instead of a db-path (and fetch the data_directory from postgres itself)

The command line stuff is a holdover from when backrest used entirely command line tools.  Seriously - go look at the File object in 0.18 (https://github.com/pgmasters/backrest/blob/9acbba173e65f40d6032ed47a1760ec48e383b91/pg_backrest_file.pm).
Ticket #20 has been around for a long time to address this issue - just hasn't been that big a deal.
But I agree with you that more discovery would be better.  I'll paste your comment into #20 and close this issue.

This was implemented in 23e6267.  DBD::Pg supports socket discovery and .pgpass.  I'll admit that I've only tested socket discovery as I don't think .pgpass makes sense in the context of backup since it must be run as the cluster owner who should have peer auth to the db.  Still, .pgpass should work fine as it is libpq feature.
As for auto-discovery of db-path: that sounds good but won't work for restores when the database is shutdown.  Instead I've opened #121 which does some cross-checking to make sure settings make sense.
I'd prefer things were setup in advance for restore (by working for backup) so there are no nasty surprises when thrust into a emergency restore scenario.

ack regarding db-path. Makes me sad but short of rewriting the configuration file on first connect I don't see any way to make this work either in situations where the database is downed.
And having backrest behave correctly only in fair weather situations beats it's purpose ;)


Restore Radiotherm away functionality with presets

#25865  Description:
-Restores Radiotherm "away mode" functionality via preset mode. This also brings back the "away_temperature_heat" and "away_temperature_cool" config settings to support.
-Adds hvac_action property to better support the Lovelace Climate card.
-Clean up "fan" attribute. Now called "fan_action", as "mode" is supported via hvac_action.
-Update current operation label from "Off" to "Idle".
Pull request with documentation for home-assistant.io (if applicable): home-assistant/home-assistant.io#10131
Example entry for configuration.yaml (if applicable):
climate:
  - platform: radiotherm
    away_temperature_heat: 62
    away_temperature_cool: 80

Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.
[x] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[ ] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[x] Tests have been added to verify that the new code works.

Hi @dieselrabbit,
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!

We removed away mode on purpose. Integrations should represent their API as-is. This is a fake away mode.

I understand point of view. The thought here was that the website and official app both have away mode functionality, "so why should the integration not support it?". (and I used it)
So I understand, is it your suggestion that the radiotherm python api be the place to support it?

It's up to the radiotherm library of it wants to support away mode. I'll close this PR now. Thanks!


Support anonymous blank nodes in OBDA mappings

Feature requested by J. Van Noten on the mailing list

In the document on SOSA and SSN (https://www.w3.org/TR/vocab-ssn/#iphone_barometer-sosa), I find the following example fragment for the creation of an individual:
<Observation/83985> a sosa:Observation ;
   sosa:hasFeatureOfInterest <apartment/134> ;
   sosa:hasResult [
      a qudt-1-1:QuantityValue ;
      qudt-1-1:unit qudt-unit-1-1:DegreeCelsius ;
      qudt-1-1:numericValue "22.4"^^xsd:double ] .

In this example, the individual of QuantityValue is anonymous: no specific IRI required.
I have a similar situation, where I want to take those values from a database.
Theoretically, that would lead to the following target part of an OBDA mapping:
:observation/{observationID} a sosa:Observation ;
   sosa:hasFeatureOfInterest :apartment/{apartmentID} ;
   sosa:hasResult [
      a qudt-1-1:QuantityValue ;
      qudt-1-1:unit qudt-unit-1-1:DegreeCelsius ;
      qudt-1-1:numericValue {observedTemperature}^^xsd:double ] .

Unfortunately, this syntax does not seem to be allowed.
The only solution I found is to split this in two mappings (again, I show only the target part):
:observation/{observationID}> a sosa:Observation ;
   sosa:hasFeatureOfInterest <apartment/{apartmentID}> ;
   sosa:hasResult :value/{observedTemperature} .

:value/{observedTemperature} a qudt-1-1:QuantityValue ;
   qudt-1-1:unit qudt-unit-1-1:DegreeCelsius ;
   qudt-1-1:numericValue {observedTemperature}^^xsd:double .

or alternatively, both written in one target specification.

To make it easier to implement at the parser level, we could only support anonymous blank nodes as objects, not as subjects.
The parser could create a blank node template with a randomly generated prefix that would take as variables:

the columns appearing in the subject and in the properties and objects inside the anonymous blank node block
a column corresponding to the row ID (needed in the absence of a primary key). This point may be tricky to implement.

Note that R2RML does not support this feature.

I've been finding this project to be very useful, but I was wondering if this feature was in the works or can be implemented? Writing logic for nested non-anonymous blank nodes has been a bit cumbersome.

The handling of anonymous blank nodes in the virtualization setting, which can be understood as the problem of automatically generating a blank node template, remains problematic.
Basically, if there is a unique constraint, then that's easy. Otherwise, there are mainly 3 partial solutions:

The database provides row ids. In principle, they could provide a robust solution, but this needs to be tested. The major downside here is that most databases don't provide row ids, making it is a very limited solution.
We generate a new UUID column and use it as unique identifier (as proposed the issue description). It relies on query optimizations to eliminate self-joins over this column for providing correct answers. That's actually a deviation for the role of a query optimization, which is supposed to only have an impact on performance, not on the correctness of the answer. Said differently, a query optimization is normally optional, but here it is not. While Ontop has matured to become very good at eliminating self-joins in many scenarios, there is still the risk that not enough query optimizations apply for some complex queries, causing invalid results. Another aspect is that post-processing a join, by a downstream application, is not possible in that setting. For instance, materialization done with the CLI would also be invalid with its current implementation (it would generate blank nodes that don't match, making joining impossible).
Use all the columns used in triples involving the blank node in its template. Here it deviates from the usual handling of blank node in pure materialization implementations, as it doesn't preserve duplicates. There are scenarios where preserving duplicates is important, so it cannot be a general solution.

This issue remains open.  In my view, the best place where to discuss it is within the RML group where a candidate successor of R2RML is being prepared. Given the trickiness of the topic, I think it should be handled by a standard, not by implementation-specific choices.

Thanks for the explanation and for the maintenance of this great project! Hopefully, a standard can be determined eventually.


[Feature Request] Audio

James,
Your PlugIn is great!  Works well in my app pretty straight out of the box.
However, I was surprised it did not contain Audio.  I wasn't able to find a plugin out there so I guess I will build my own.
Are you aware of one?
Thanks...Steve

Check: https://github.com/xamarin/XamarinComponents#community-provided-open-source-plugins

James,
Thanks for the link.  I see a couple of items there worth looking into further.
In today’s development world it is difficult to find a single product that is complete.  Yours does a good job of dealing with ‘visual’ media, but is lacking the ‘audio’ media.  Others allow for media ‘playing’ without the ‘capture’.  Too bad there is not a single one that combines all.
Thanks again…Steve
From: James Montemagno<EMAIL_ADDRESS>Sent: Thursday, December 28, 2017 3:25 PM
To: jamesmontemagno/MediaPlugin<EMAIL_ADDRESS>Cc: sjreed<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [jamesmontemagno/MediaPlugin] [Feature Request] Audio (#427)
Check: https://github.com/xamarin/XamarinComponents#community-provided-open-source-plugins
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/jamesmontemagno/MediaPlugin/issues/427#issuecomment-354373680 , or mute the thread https://github.com/notifications/unsubscribe-auth/AArFleP1A-TtPfQW6WM4y-QjgDtGNcTuks5tFCM_gaJpZM4ROisf .  https://github.com/notifications/beacon/AArFlTTpqGqmWWD_G7kXpMCe8DPaA1yjks5tFCM_gaJpZM4ROisf.gif


Add some additional text about getting help.

Closes #10128

LGTM. Looks good, thanks @brendandburns

Shippable is a flake, hitting it again.


chore: Remove Buffer.prototype.toJSON overwrite

Hello, could you give more details related to this override ?
We spent a lot of time to identify a regression on our side caused by this override.
When do you plan to release this fix ?
Thanks,
Sebastien


Major llama.cpp API Change

llama.cpp https://github.com/ggerganov/llama.cpp/pull/3228#event-10501459551 just got merged with major changes to the API. See #184 with some notes on this.
This PR has basic changes to match the underlying API changes. Things to do:

[x] LLamaContextParams and LLamaModelParams have been split into 2, we should split IModelParams in the same way
[x] Fix cloning contexts (removed support)
[x] Fix OutOfContext test
[x] Add binaries for all platforms

Built by this run based on this commit
Build by this run based on this commit
[ ] Test on all platforms

[x] Windows (Martin)
[x] Linux
[ ] MacOS

@SignalRT 🙏

[ ] Update binaries and fix tokenizer tests

@saddam213 I've made some changes which have broken some of the LLama.Web stuff at the moment, it looks like it's all places which construct a single context by loading an entirely new set of model weights (probably legacy code?). I can probably throw in some workarounds if you want, or do you want to do something more complete and push it into this PR?

@saddam213 I've made some changes which have broken some of the LLama.Web stuff at the moment, it looks like it's all places which construct a single context by loading an entirely new set of model weights (probably legacy code?). I can probably throw in some workarounds if you want, or do you want to do something more complete and push it into this PR?

No probs man, I'll get it done tonight, wont take long to get it up to date with your changes :)

@saddam213 I actually just pushed up some workarounds to at least get it building, but I left some todos in place.

The web project has fallen behind a bit, I need to get it up to date, got lost in the world of stable diffusion the last few weeks, lol

haha I know how that is. I bounce back and forth between LLMs and stable diffusion all the time 😆

wondering if we should merge the Web and WebApi into one project, there is a lot of code that will need to be shared to get them both up to date, and we can just use an appsetting config to decide what it strats up, API or WEB
Or add a shared project, but that seems overkill for examples
I cant even port the LLamaStack api or web cause I went and make custom executor line an idiot :/

Ok, so the changes to get the web up to date with version 0.5.1 are more than I thought.
(have done a untested prelim change on my master branch) Commits
I think its too big to mash into this PR, so I will create its own PR then we can merge that in, then we can merge this PR's changes overtop
That work for you?

That work for you?

That's fine by me, there are workarounds in place in this PR so that it at least builds and we can get your PR in right after this one is done.
I'll try to get this one finished and merged soon so we can get on with that :)

The only thing blocking this PR is proper testing on MacOS.

I will be at home tomorrow. This week I could check this PR

@martindevans
At least with today llama.cpp binaries It fail in two test. All related with the tokenizer.
This could be related with the latest changes in the tokenizer: https://github.com/ggerganov/llama.cpp/pull/3538
, but I cannot test it in Windows today
These are the errors:
Xunit.Sdk.EqualException
Assert.Equal() Failure: Collections differ
↓ (pos 1)
Expected: [1, 450, 4996, 17354, 1701, ···]
Actual:   [1, 1576, 4996, 17354, 1701, ···]
↑ (pos 1)
at LLama.Unittest.LLamaContextTests.Tokenize() in ...LLamaContextTests.cs:line 40
And
Xunit.Sdk.EqualException
Assert.Equal() Failure: Collections differ
↓ (pos 0)
Expected: [450, 4996, 17354, 1701, 29916]
Actual:   [1576, 4996, 17354, 1701, 29916]
↑ (pos 0)
at LLama.Unittest.LLamaContextTests.TokenizeWithoutBOS() in ../LLamaContextTests.cs:line 48

Thanks for testing that, I'll retrigger the github action to recompile all of the binaries and fix the tokenizer tests.
Did you test with the included binaries at all to confirm that everything else works?

I didn’t tested it yet with the included binaries, I used my daily build binaries. Tomorrow I will test the binaries generated by the github build and I will make some test with additional projects and some Semantic Kernel examples.

This could be related with the latest changes in the tokenizer: ggerganov/llama.cpp#3538 , but I cannot test it in Windows today

Hi, that PR only applies if you explicitly pass "special=true" to llama_tokenize, otherwise tokenizer behavior remains unchanged.
Using "special=true" is meant only for "internal" use, and should not be exposed to the end user ( application user )
Enabling special token processing causes the following:

No space prefix is added to the input string. This is important when prompt format expects word instead of  word, for example when system prompt expects system instead of  system which are different tokens.
Special ( control ) tokens, such as <s>, <|im_start|> etc. are explicitly matched first and directly converted to appropriate token id.
Remaining string segments, between previously matched special tokens are tokenized normally.
Results are merged into one chain of token ids.

This addition to the API is meant for processing things like prompt template, and allows including bos/eos directly in the input string.
User text should be tokenized normally, with "special=false".

Clarification on "special" tokens:
Model vocabulary naturally has a tree like structure, every normal token can be represented by two other shorter tokens, down to single character.
Tokenizer picks neighboring characters from input string, finds a token that represents that substring, and repeats merging neighbors until no valid longer token can be matched.
Special tokens break that rule, and are chosen to never be "reachable" by merging normal tokens, preventing the user from inserting control tokens in the prompt.
Previously, special tokens were simply tokenized as plaintext ( <s> would become something like <, s, > ), and various prompt formats weren't exactly working with llama.cpp.
This change, allows use of special ( control tokens ), directly in the input string, removing the need to fiddle with querying vocabulary manually to make prompt templates work.

@SignalRT I've added new binaries and fixed a few small things (e.g. I think out-of-context handling should be about 100x faster now).
@staviq thanks very much for the extra info! I think the problem in this case was because SignalRT was using newer binaries than this PR was built for I hadn't added that new parameter yet on the C# side! I'm not quite sure what happens in this case (the call was still successful, so I guess whatever junk was on the stack gets used). Once I added the parameter and passed special=false the results went back to the usual values.

It's seems to work but I changed the packages in the Example to be able to run SK examples. This is the change:

So for me is OK.

Thanks for testing that!

It's a great work! Is it a good time to publish a new release?

And maybe I should add an auto-release to ci, I'll do it this weekend.

It's a great work! Is it a good time to publish a new release?

I think so yeah, this has made a few breaking changes to the API but nothing massive. Good time to push out a new version 👍

I think so yeah, this has made a few breaking changes to the API but nothing massive. Good time to push out a new version 👍

I'm making the auto-release ci now and I think there's something confusing me. There are two supports for MAC, CPU and Metal. However only one libllama.dylib is included in LLama/runtimes, is it both used for CPU and Metal?

@AsakusaRinne It was removed in this PR: https://github.com/SciSharp/LLamaSharp/pull/163
From the discussion there it looks like one binary supports CPU and Metal inference (but I don't have a Mac so I can't confirm that).

@AsakusaRinne, one binary supports CPU and GPU.

@martindevans @SignalRT Thank you for your help! I've opened a PR #204 of the auto-release ci. 😊


[SBP - MS1] Bump versions

Description
It's important to not leave your current deps versions so outdated in comparison to the Substrate releases.
Suggested Solution
Update from v0.9.27 to v0.9.33.

Hello @arturgontijo!
I'm working on finishing this issue but I'll like some help clarifications regarding on how to import the dependencies for newest version of polkadot cumulus, I'm trying to run the parachain template in this repo importing all the dependencies but everytime I try to import it I got this error
the package `hashed-parachain-runtime` depends on `cumulus-pallet-aura-ext`, with features: `try-runtime` but `cumulus-pallet-aura-ext` does not have these features.

failed to select a version for `cumulus-pallet-aura-ext` which could resolve this conflict

I'm working on the bracn 272-sbp-ms1-bump-versions

There will be some add/removal of types from imported pallets, but it should be straightforward to "fix" them.

can keep going with this o

Yep, I cloned it, compiled and It looks like it works! Awesome!

Closed as is now updated on #317


apps: separate the ops and user grafana dashboards

What this PR does / why we need it: it will allow us to control what grafana dashboards from the grafana-ops chart will be visible to the user
Which issue this PR fixes (use the format fixes #<issue number>(, fixes #<issue_number>, ...) to automatically close the issue when PR gets merged): fixes #12
Special notes for reviewer:

only dashboards with "labelKey" values set to 1 will be visible to the user. By default all kube-prometheus-stack dashboards. A ops dashboard can be visible to the user if you set "user_visible" to true
the grafana-ops chart template was modified to automatically load the dashboards defined in the values.yaml file
we will have one ConfigMap for each dashboard

Checklist:

[x] Added relevant notes to WIP-CHANGELOG.md
[x] Proper commit message prefix on all commits
[ ] Updated the public facing documentation
Is this changeset backwards compatible for existing clusters? Applying:

[x] is completely transparent, will not impact the workload in any way.
[ ] requires running a migration script.
[ ] will create noticeable cluster degradation.
E.g. logs or metrics are not being collected or Kubernetes API server
will not be responding while upgrading.
[ ] requires draining and/or replacing nodes.
[ ] will change any APIs.
E.g. removes or changes any CK8S config options or Kubernetes APIs.
[ ] will break the cluster.
I.e. full cluster migration is required.

Chart checklist (pick exactly one):

[ ] I upgraded no Chart.
[x] I upgraded a Chart and determined that no migration steps are needed.
[ ] I upgraded a Chart and added migration steps.

Pipeline config (if applicable)
If you change some config options (e.g. add/rename variable or change the default value) you may need to update the config used by the pipeline in pipeline/config.

there are new requirements for this issue pending approval. I will cancel this pull request.


Investigate Zap SHA-1/Base64 false positive

Currently, the rule is disabled in the editor, because those algorithms are heavily used by Tweek. Need to investigate the rule and see if we can enable it again.
See #633

Not sure if that's a problem....

Well, it could detect a real problem. When the rule is disabled there is no way to find out...


Statically cannot download remote images.

Hello,
I get random 403 errors on some images taken from IMDB.
An image that appears.
<EMAIL_ADDRESS>Images that do not appear.
<EMAIL_ADDRESS>The question is whether statically supports remote image or not?
A few days ago these errors did not exist.
Thanks.

I check the image that doesn't appear and it appears. weird.


OpenEBS -  /run/udev is not a directory

I am trying to set up OpenEBS with k3OS but the node disk manager is not starting. The error is
MountVolume.SetUp failed for volume "udev" : hostPath type check failed: /run/udev is not a directory

Any idea of what I can do to fix/work around it? Thanks

see also #151

As per https://twitter.com/dweomer/status/1226289185054588933?s=20, I think OpenEBS on k3OS works now.


Fix inflecto repo's issue #16

First PR on the new repo! 🎊🎉💪
This fix https://github.com/mbj/inflecto/issues/16
cc: @fuelxc @Ptico

Awesome!


Crashes when Reading File

Hi Dane, congratulations on releasing version 2.0.
Unfortunately, I'm unable to have it 'Read from File'. Doesn't seem to matter which TXT file I choose, short or long, it crashes with the following;
https://imgur.com/a/mLVZCde
As my phone doesn't allow me to select the crash report text, I'm unable to upload it as plain text. If I find a way of extracting it, I'll include it.
I'm running 2.0 from the GitHub releases page, using a Mi 9T phone running Android 10.
Let me know if you need any further information.

Hi @richwalm,
Thanks for trying out TTS Util version 2.0 and submitting this report! I wasn't expecting anyone to try it out so quickly!
It doesn't look like this bug will be difficult to fix. Just a silly assumption on my part that Android would only yield non-null strings for file properties. I should be able to release a new version in the next few days.

This should be fixed in version 2.0.1 now. I have uploaded a new APK. I will try to get the F-Droid version updated soon.
I will say that I was unable to reproduce the bug myself. It probably just doesn't occur when using the default file manager app. Please let me know if it's still broken.

Hi Danesprite, v2.0.1 is working fine. Thanks.

Great, I'm glad I could fix the problem! I hope you find the app useful :-)


Invalidate git index cache before smudging

At Wikimedia we shell-out to git-fat from inside another piece of software. As a result we occasionally hit the problem where a git smudge filter is not triggered since there's a fair chance that the os.utime call inside git-fat that is intended to invalidate the git index cache is triggered within the same second as a git checkout. In those instances, git will not trigger the smudge filter and the file in the checkout will remain orphaned.
We worked around this by ensuring that the timestamp on a file is modified by looking at its previous timestamp and adding 1 to it. Submitting as a pull-request here in case this might be generally useful.

Thanks for finding this. I still don't know how to just invalidate the index without touching the file so I'll merge this as is.


Complete unbonding transaction

[ ] Design
[ ] Implementation

Unbonding stake is split into 3 phases:

first the user needs to send an unbonding tx, this triggers the unbonding intent
the user now needs to wait for a certain amount of time (30days or something) set for the network
after 30 days the user needs to end the unbonding by sending another "end unbonding" transaction to receive his stake back liquid in his account

Note: the user will not get slashed after the unbonding period as far as I know
In the designs, Jordan calls the termination of the tx "Claim".

@jbibla Please link your design here.

not sure which you meant, so here are two designs.
https://zpl.io/bWL0krn - Unstaking
https://zpl.io/bWLnE7e - Claim

Uh oh, if you don't know what the design is then we can't call the design "done" and I can't implement it.
I created this issue from the "End unbonding" section of the roadmap.
We need a written spec for what this means.  @faboweb?

I updated the description

yes, this is a new concept for me. please use the same interaction model and design we have for "claim".

i'm saying the design for "claim" can be used for "complete unbonding" which can be found here https://zpl.io/bWLnE7e

Scope:

add action button to the TmLiTransaction template in tendermint/ui
change TmLiStakeTransaction for the unbonding transaction to

show the time until the unbonding period is over (where to get the unbonding period?)
show the call to action (disabling it until period is over)

create action to send end unbonding transaction
link end unbonding action to call to action on tx

i'm saying the design for "claim" can be used for "complete unbonding" which can be found here https://zpl.io/bWLnE7e

Oh, I get it.  Man, we're really good at generating lingo and synonyms!  :-)


Ignore whitespace around structures

Since Squizlabs have fixed the whitespace issue, this PR relaxes the PSR-2 standard to allow whitespace around control structures.

:+1:


Update packages to address security vulnerabilities

Describe the bug
8 high severity vulnerabilities after running npm install
To Reproduce
Steps to reproduce the behavior:

Go on terminal
cd typescript
npm install
See error

Expected behavior
No warnings on invulnerabilities
Screenshots

Desktop (please complete the following information):

OS: MacOS
Browser: Safari
Version: Monterey 12.0.1

The vulnerabilities on the typescript side are in development dependencies, so the production code will not include the vulnerable libraries. On the Wordpress side the vulnerabilities are in libraries required by the official Wordpress plugin packages so we cannot work around them.
I have added checks to CI to warn us of any updates we can make.
See https://github.com/DurhamARC/metalation-calculator/blob/a1ed31afb359d26328d2690bcd4bcaea95701f7a/security.md for further info.


Time to string

Codecov Report
Base: 70.81% // Head: 67.51% // Decreases project coverage by -3.30% :warning:

Coverage data is based on head (1124879) compared to base (932abda).
Patch coverage: 2.27% of modified lines in pull request are covered.

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

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #32      +/-   ##
==========================================
- Coverage   70.81%   67.51%   -3.31%
==========================================
  Files          49       50       +1
  Lines         819      862      +43
  Branches      187      208      +21
==========================================
+ Hits          580      582       +2
- Misses        136      178      +42
+ Partials      103      102       -1

Impacted Files
Coverage Δ

cpp_utils/src/cpp/file/file_utils.cpp
0.00% <0.00%> (ø)

cpp_utils/src/cpp/time/time_utils.cpp
47.05% <0.00%> (-52.95%)
:arrow_down:

cpp_utils/src/cpp/utils.cpp
31.25% <0.00%> (-31.25%)
:arrow_down:

cpp_utils/src/cpp/exception/Exception.cpp
72.72% <100.00%> (ø)

...ils/include/cpp_utils/event/impl/SignalManager.ipp
76.27% <0.00%> (+3.38%)
:arrow_up:

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.


Complete the README and add the tutorial

Complete the README.md which is used to introduce yurt-device-controller
Add yurt-device-controller-tutorial.md which is used to guide how to use yurt-device-controller

/lgtm
/approve


[FlatButton][ListItem][MenuItem] Wrong design in chrome 47

Problem Description

The following example shows the bug with the FlatButton component.
ListItem and MenuItem have similar problems
import React, { Component } from 'react';
import ReactDOM from 'react-dom';

import { MuiThemeProvider, getMuiTheme } from 'material-ui/styles';
import FlatButton from 'material-ui/FlatButton';

class App extends Component {
  render() {
    return <MuiThemeProvider muiTheme={getMuiTheme()}>
      <div>
        <FlatButton label="Default" />
        <FlatButton label="Primary" primary={true} />
        <FlatButton label="Secondary" secondary={true} />
        <FlatButton label="Disabled" disabled={true} />
      </div>
    </MuiThemeProvider>;
  }
}

ReactDOM.render(<App />, document.getElementById('test'));
```

Output on Chrome 47
![](http://oi68.tinypic.com/2m64shf.jpg)

Output on Chrome 50
![](http://oi63.tinypic.com/fjjext.jpg)
Versions
--------
<!-- Versions affected. (Please test with Material-UI HEAD.) -->

- Material-UI: 0.15.0-beta.2
- React: 15.0.1
- Browser: 47.0.2526.80 (64-bit)

<!--

For feature requests, please delete the template above,
and include a link to the relevant section of Material Design spec,
or a screenshot showing your proposed feature,
and enough information to understand your suggestion.

-->

starts from version 0.15.0-beta1, this problem also occurs in chrome 45. Please see the follow pic for reference:

@mbrookes how many prior versions of browsers like chrome are we supporting (officially)?  Not to say that we can't fix this anyways, just curious what our official policy is

Figured it out. Object property iteration order is ending up different in setValueForStyles() when touched by a particular script (even though when I iterate over the styles in the createElement it still has the original order preserved).
The result is background gets iterated over after backgroundColor in chrome 48, but not in 49 (both with React 15 + our updated codebase/deps, etc...)
Now, since object property iteration order can't be guaranteed (from what I understand). That means this is definitely something we need to solve when we generate inline styles.

@mbrookes I think we can take care of this at the source (EnhancedButton) by not passing both background: none AND backgroundColor: 'xxxx'.

@mauvew I just realized that I fixed your issue and it isn't even the OP's issue...

For reference, here are some issues in older chrome versions I have found that I am fixing:

And this one is in the current version of chrome too... 👎


Error when only using an empty single file

Bit of an edge case but...
$ mkdir content
$ touch content/text.txt
$ create-torrent ./content/ -o out.torrent
$ torrent out.torrent

Produces this info.length issue
    throw new Error('Torrent is missing required field: ' + fieldName)
          ^
Error: Torrent is missing required field: info.length
    at ensure (/usr/local/lib/node_modules/torrent/node_modules/torrent-stream/node_modules/parse-torrent/index.js:142:11)
    at parseTorrent (/usr/local/lib/node_modules/torrent/node_modules/torrent-stream/node_modules/parse-torrent/index.js:30:5)
    at torrentStream (/usr/local/lib/node_modules/torrent/node_modules/torrent-stream/index.js:62:10)
    at module.exports (/usr/local/lib/node_modules/torrent/index.js:6:16)
    at Object.<anonymous> (/usr/local/lib/node_modules/torrent/cli.js:117:12)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)

This was a bug in parse-torrent-file. Fixed and released a new version.
I noticed torrent isn't using the latest version of parse-torrent, so I'm not sure if the fix will get inherited. You might want to send a PR to torrent to use ^4.0.0 of parse-torrent.

Thanks @feross I will look to bump torrent over the weekend


Suzanne ask Ralph Perrine to judge

Formal email invitation send to Ralph 8/9. This follows-up on a casual conversation during which Ralph had a positive response to idea of judging .


Documentation: Developing Modules section

Description:
This is the section dedicated to the Module developers that would like to create their own Module.
The topics that should be included:

Useful resources for creating K8S operators (kubebuilder book/operator SKD/template-operator repo)
Mention that both Manifest CR and Kyma CR Status fields important for troubleshooting
Good practices for module development

What should be put in the Module CR (user config)
Release lifecycles for Modules
Versioning recommendations for Modules

Resource limits for Operators

This whole content can be split among multiple documents and linked in a single readme or index.
Acceptance Criteria:

[ ] Documentation created for the above list of topics
[ ] Documentation available in the /docs/module-development directory

We've concluded that the kubebuilder documentation is completely enough for the teams to start.


ODHack: Extend Proposal Component to Support Discussions

Description
Extend the current React frontend to support viewing and adding comments to proposals. This involves fetching comment data from IPFS, displaying it, and allowing users to add new comments. The new comments will be submitted to IPFS via a backend service, and the resulting IPFS hash will be used to update the proposal on the blockchain.
Expected skill level: Junior Frontend Developer
Tasks
Frontend

Fetch Comments from IPFS:

Modify the Proposal component to fetch IPFS file hashes from the contract.
Download comment content from IPFS.
Display comments along with the submitter's address or Starknet.ID and their governance token balance.

Add Comments to Proposals:

Add a form to the Proposal component for submitting new comments.
On form submission, call the backend with the comment text.
Receive the IPFS file hash from the backend.
Prompt the user to confirm the transaction in their wallet to update the proposal with the new comment hash.

Pointers
Frontend Code

Proposal Component:

File: frontend/src/components/Proposal.tsx
Modify to include fetching and displaying comments.
Add form for submitting new comments.

New Proposal Form:

File: frontend/src/components/NewProposalForm.tsx
Reference for form handling and contract interaction.

Definition of Done
The frontend is fully static and ready to be deployed, is formatted according to VSCode Typescript Format command
See CONTRIBUTING.md for information on claiming the task and how to work.

Can I work on this

@kateberryd You have been assigned, I would advise you join the Telegram group for quicker communication.

Thank you @tensojka Please what's the telegram handle

Thank you @tensojka Please what's the telegram handle

https://github.com/CarmineOptions/konoha/blob/master/CONTRIBUTING.md @kateberryd

@kateberryd Could you provide an estimated delivery timeline?

I’m considering a time frame of five working days @tensojka

Thanks, completely in #119 now


update blog RSS/Atom feeds to work with Wagtail

dev notes

[x] RssBlogPostFeed
[x] AtomBlogPostFeed

tested with the w3c feed validator and both feeds are valid. Atom is the only one that uses the profile links for authors, but it also inserts an empty <name></name> when the author is empty (not invalid, just flagged by the checker). I think we can live with that, so closing.


add probes to Changelog

skfem.InteriorBasis.probes was added in #573, this records it in the Changelog; fixes #594.

This addition would require, under Semantic Versioning, bumping the minor version from 2.5.0 but there have been a lot of bigger changes since then so I'll leave it.


feat: eventfd_read/write for Android/FreeBSD/Linux

Add
int eventfd_read(int fd, eventfd_t *value);
int eventfd_write(int fd, eventfd_t value);

for

Android
FreeBSD
Linux

This FreeBSD 12 CI failure is for the reason that these things are added in FreeBSD 13
From the lesson I learned from my last PR, even though a symbol is not available for 12, we should also put it in the freebsd/mod.rs
Friendly ask, what should we do about this case :<

This FreeBSD 12 CI failure is for the reason that these things are added in FreeBSD 13
From the lesson I learned from my last PR, even though a symbol is not available for 12, we should also put it in the freebsd/mod.rs
Friendly ask, what should we do about this case :<

The way I see it, something along those lines in libc-test/build.rs in appropriate places :
"eventfd_t" if Some(13) > freebsd_ver => true,

same for the calls.

Looks good, could you squash commits into one?

Accidentally broke my branch, move this PR to #3437
For the OpenBSD and Solarish maintainers, I am sorry about the ping, please ignore it


Stretch64: ensure apt database can be used

I didn't manage to fix the Stretch64-lxc image for the "Failed to lock apt for exclusive operation" error.; one way I've found is to unbreak it upon provisioning, by making sure the needed directories are present.

This PR is a : Improvement

[x] Documentation is written
[x] parameters.yml.dist is updated
[x] playbook.yml.dist is updated
[x] Changelog was updated

Not needed if the image is built correctly.


How can we set the height of td in the grid??

How can i set the height of td in the grid (NOT IN insert row or edit row), if the data exceeds it should either give read more option or scroll option.
Is this possible??

Duplicate of https://github.com/tabalinas/jsgrid/issues/77


Create 0000-01-02-LouisLouw1.md

layout: slide
title: "Welcome to our second slide!"
Your text
Use the left arrow to go back!

pull request merging


[Python] Only convert in parallel for the ConsolidatedBlockCreator class for large data

Describe the enhancement requested
The Consolidated Block Creator runs the column conversion in parallel, creating a Scalar Memo Table for each column up until pa.cpu_count().
For performance reasons, jemalloc and mimalloc maintain allocations on a per-memory segment level to reduce contention between threads.
What this means is that if a user calls table.to_pandas(split_blocks=False) for a small table, a disproportionately large amount of memory gets allocated to build the Scalar Memo Table. Both jemalloc and mimalloc will essentially allocate a chunk of memory per column.
Here is some code:
import pyarrow as pa

def test_memory_usage():
    table = pa.table({'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd', 'E': 'e', 'F': 'f', 'G': 'g'}) #'H':'h', 'I': 'i', 'J': 'j', 'K':'k', 'L':'l', 'M':'m', 'N':'n', 'O':'o', 'P':'p', 'Q':'q', 'R':'r', 'S':'s', 'T':'t', 'U':'u', 'V':'v', 'W':'w', 'X':'x','Y':'y','Z':'z'})
    df = table.to_pandas()

if __name__ == '__main__':
    test_memory_usage()

Here are the resulting memory allocations summarised with memray:
jemalloc with 7 columns:
📦 Total memory allocated:
        178.127MB

📊 Histogram of allocation size:
        min: 1.000B
        --------------------------------------------
        < 4.000B   :  3548 ▇▇
        < 24.000B  :  1253 ▇
        < 119.000B : 14686 ▇▇▇▇▇▇▇
        < 588.000B :  3746 ▇▇
        < 2.827KB  : 58959 ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇
        < 13.924KB :  2550 ▇▇
        < 68.569KB :   403 ▇
        < 337.661KB:    84 ▇
        < 1.624MB  :    24 ▇
        <=7.996MB  :    20 ▇
        --------------------------------------------
        max: 7.996MB

jemalloc with 26 columns:
📦 Total memory allocated:
        238.229MB

📊 Histogram of allocation size:
        min: 1.000B
        --------------------------------------------
        < 4.000B   :  3545 ▇▇
        < 24.000B  :  1627 ▇
        < 119.000B : 15086 ▇▇▇▇▇▇▇
        < 588.000B :  3882 ▇▇
        < 2.828KB  : 58971 ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇
        < 13.929KB :  2552 ▇▇
        < 68.593KB :   403 ▇
        < 337.794KB:    84 ▇
        < 1.625MB  :    24 ▇
        <=8.000MB  :    47 ▇
        --------------------------------------------
        max: 8.000MB

mimalloc with 7 columns:
📦 Total memory allocated:
        380.166MB

📊 Histogram of allocation size:
        min: 1.000B
        --------------------------------------------
        < 6.000B   :  3548 ▇▇
        < 36.000B  :  7470 ▇▇▇▇
        < 222.000B :  9524 ▇▇▇▇▇
        < 1.319KB  : 57271 ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇
        < 7.999KB  :  6492 ▇▇▇
        < 48.503KB :   775 ▇
        < 294.066KB:   150 ▇
        < 1.741MB  :    26 ▇
        < 10.556MB :     1 ▇
        <=64.000MB :     4 ▇
        --------------------------------------------
        max: 64.000MB

mimalloc with 26 columns:
📦 Total memory allocated:
        1.434GB

📊 Histogram of allocation size:
        min: 1.000B
        --------------------------------------------
        < 6.000B   :  3545 ▇▇
        < 36.000B  :  7845 ▇▇▇▇
        < 222.000B : 10001 ▇▇▇▇▇
        < 1.319KB  : 57332 ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇
        < 7.999KB  :  6501 ▇▇▇
        < 48.503KB :   794 ▇
        < 294.066KB:   150 ▇
        < 1.741MB  :    26 ▇
        < 10.556MB :     1 ▇
        <=64.000MB :    21 ▇
        --------------------------------------------
        max: 64.000MB

You can see how dramatically the memory increases even for a very small table.
My proposal is that we only do the conversion in parallel when it might make a substantial performance difference for a table of a certain size. I'm not quite sure which size, but once the code has been refactored, we can run experiments to come to a data-informed decision.
Component(s)
C++

I’ve taken a look at the code.
OptionalParallelFor is used when PandasOptions::use_threads is set. Internally, it uses the default CPU thread pool which can allocate CPU-count threads at a time. That’s why it allocates CPU-count threads as @anjakefala described.
My first solution/idea: add another option to PandasOptions — int threads. Then if that’s different than 0, create a different ThreadPool with that as capacity when calling the parallel-for.
Easy, but it’s an extra option that users have to remember to set.
Alternative
Add more parameters to parallel-for(columns) that modify the loop that submits tasks to the thread-pool:
Start with a low minimum number of submitted tasks (eg 2. each column is a task). After that, tasks are added with a small delay (microseconds) as to give the chance of the initially submitted tasks to finish (because cols are small) and make these initially used threads to be re-used.
This might require internal ThreadPool changes to avoid waits that wouldn’t lead to a global reduction in time taken to convert all columns.

@felipecrv Is modifying ThreadPool better than an option where we use an approach similar to the SplitBlockCreator class for tables under a certain size? That's more along the line of what I was thinking of.
However, if you think work-stealing would be the most robust solution, that other functions would benefit from, I'd be game for approaching this.
I prefer the work-stealing approach because, ideally, we wouldn't require the user to know about the existence of an option to set. Folks might not know that the memory usage has to do with the spawning of individual threads. They might not even know why to_pandas spawns multiple threads.

Sharing some progress here in the open:

the elegant solution is work-stealing. Now you know why work-stealing was invented.

@anjakefala will test a version of this that uses a ParallelFor [1] that doesn't create one Future per task/column — the function keeps going by popping the next task (column index) from a shared std::atomic<int> called next_task. This atomic integer plays the same role as the multiple task queues in a generic work-stealing algorithm implementation.
BTW, this is pseudo-code for generic Work Stealing:
function WorkerThread:
    while true:
        if own_task_queue is not empty:
            task = own_task_queue.pop()
            execute(task)
        else:
            // Try to steal work from another thread
            victim = randomly_select_thread()
            stolen_task = victim.steal_task()
            if stolen_task is not None:
                execute(stolen_task)
            else:
                // No work available, terminate
                return

function steal_task:
    if victim_task_queue is not empty:
        return victim_task_queue.pop()
    else:
        return None

In ParallelForWithBackoff [1], each worker starts from a task/column they should complete (consider that the own_task_queue) and when done it can keep going while next_task.fetch_add(1, std::memory_order_acq_rel) returns a task smaller than num_tasks. Getting that atomic and incrementing it is how it "steals" the task from all the other workers. This maximizes throughput and reduces thread-local allocations because the same thread can very quickly go through many columns.
[1] https://github.com/felipecrv/arrow/blob/b54cb408a8c73af0c4fc76cdceadca0c0b240cb0/cpp/src/arrow/util/parallel.h#L104-L229

I'm honestly not sure what this has to do with work stealing.
If I read correctly:

a new ScalarMemoTable is created when converting each column (either eagerly or lazily, this might or might not matter)
columns are converted in parallel for smaller execution times
a lot of memory allocations may occur because of this

What I would like to know is:

What is the concern? The total number of allocations? The max allocated working set during the workload?
Is it a practical concern?

Is it a practical concern?

I think the original reported case (converting a tiny table of a few kilobytes to pandas can give a spike of several hundred MBs in memory usage) is something people can certainly run into. And although it will often not be concerning (typically when working with smaller data, memory usage is not an issue, and when actually working with larger tables and memory usage becomes relevant, this overhead will disappear), it is definitely surprising and can lead to confusion. So I think it is worth "fixing".
But the potential fix I was thinking of could also be something much simpler, like with some heuristic decide to just not do the conversion in parallel for smaller data.
For the conversion the other way around (pandas -> pyarrow), we actually have some heuristic currently (in python):
https://github.com/apache/arrow/blob/a6e577d031d20a1a7d3dd01536b9a77db5d1bff8/python/pyarrow/pandas_compat.py#L573-L581

Yes, I agree this could just be fixed with a heuristic, especially as parallelizing will not be performant on very small data.

I'm honestly not sure what this has to do with work stealing.

It's the inspiration for this, but if it seems to make the understanding harder, just ignore it.

What is the concern? The total number of allocations? The max allocated working set during the workload?

The practical concern is that jemalloc and mimalloc allocate significant amounts of thread-local data:

For performance reasons, jemalloc and https://github.com/microsoft/mimalloc/issues/351 maintain allocations on a per-memory segment level to reduce contention between threads.

Yes, I agree this could just be fixed with a heuristic, especially as parallelizing will not be performant on very small data.

And that is exactly what I'm doing, but instead of looking at number of rows I look at how long it takes to convert the columns on average, while doing the conversions. Never blocking [1] or sleeping.
It's an adaptive solution: you pass a duration, if it takes more than that duration, a few more threads are allowed to start.
      // If the average wall-clock time per task is greater than the
      // small_task_duration_secs, grow the number of workers geometrically.
      if (static_cast<double>(elapsed_time.count() * steady_clock::period::num) >
          (small_task_duration_secs * steady_clock::period::den) * num_tasks_completed) {
        num_workers = std::min(
            ((num_workers * GrowthRatio::num - 1) / GrowthRatio::den) + 1, max_workers);
      }

And instead of having these issues for every kind of parallelization we do in the future, this function can be used on any problem where the size of the tasks can range from trivial to very expensive.
This what the fix looks like at the callsite:
-    return OptionalParallelFor(options_.use_threads, num_columns_, WriteColumn);
+    if (options_.use_threads) {
+      const double kSmallTaskDurationSecs = 0.008;  // 8ms
+      return ::arrow::internal::ParallelForWithBackOff(num_columns_, WriteColumn,
+                                                       kSmallTaskDurationSecs);
+    } else {
+      for (int i = 0; i < num_columns_; ++i) {
+        RETURN_NOT_OK(WriteColumn(i));
+      }
+      return Status::OK();
+    }

[1] except for the lock-free reading of the next_task atomic

For the concrete example here, it is still surprising that allocating 26 memo tables, all with only one (!) element, would result in 200+MB of memory allocations on jemalloc, and 1+GB on mimalloc.
Our hash table is presized for 32 elements, which shouldn't probably result in so much memory being allocated.
(caveat: I don't know what memray is accounting exactly here)
So before trying to add heuristics for parallelization, perhaps we should investigate this?

A quick experiment (passing deduplicate_objects=False) shows that the memo table is probably not the culprit, since not allocating a memo table seems to result in the same memory consumption.

Ok, so this is really the initial pre-sizing of the memo tables.
However, the problem here is wrongly interpreting the observations. The 1+GB are not so much "allocated" than pre-reserved by the allocator (mimalloc or jemalloc). Those are empty pages are most probably not backed by physical memory until they are actually used by the application (Arrow). The only thing allocated is virtual address space, and virtual address space is virtually infinite (up to 2**48 bytes per process).
The actual amount of allocated physical memory is the amount necessary for each 32-element memo table, and that is bound to be very small.

Users tend to worry about such figures because they can give a hint that something is wrong (a leak? a performance issue?) while everything is actually operating as normal. Ideally, profilers such as memray would be able to detect the different kinds of "allocations" but that's a non-trivial problem, especially when private copies of e.g. jemalloc or mimalloc are involved.

I've opened a feature request issue (probably a bit pie-in-the-sky) on the memray side: https://github.com/bloomberg/memray/issues/577

Also a couple more observations:

on Linux (Ubuntu 22.04), if you switch to the system allocator (ARROW_DEFAULT_MEMORY_POOL=system) the behavior disappears, which is not better in itself, but may reassure users
if you choose mimalloc, MIMALLOC_SHOW_STATS=1 gives you summary stats from mimalloc's PoV at shutdown.

We can therefore confirm that the amount of memory committed (not just reserved) is reasonably small:
$ ARROW_DEFAULT_MEMORY_POOL=mimalloc MIMALLOC_SHOW_STATS=1 python -c "import pyarrow as pa; table = pa.table({'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd', 'E': 'e', 'F': 'f', 'G': 'g', 'H':'h', 'I': 'i', 'J': 'j', 'K':'k', 'L':'l', 'M':'m', 'N':'n', 'O':'o', 'P':'p', 'Q':'q', 'R':'r', 'S':'s', 'T':'t', 'U':'u', 'V':'v', 'W':'w', 'X':'x','Y':'y','Z':'z'}); table.to_pandas()"
heap stats:    peak      total      freed    current       unit      count
  reserved:    1.5 GiB    1.5 GiB  128.5 KiB    1.5 GiB                        not all freed!
 committed:  112.1 MiB  115.1 MiB  115.1 MiB   64.2 KiB                        not all freed!
     reset:      0          0          0          0                            ok
   touched:    3.1 MiB    3.1 MiB    3.2 MiB -100.3 KiB                        ok
  segments:     25         25         25          0                            ok
-abandoned:      0          0          0          0                            ok
   -cached:      0          0          0          0                            ok
     pages:      0          0         25        -25                            ok
-abandoned:      0          0          0          0                            ok
 -extended:      0
 -noretire:      0
     mmaps:      0
   commits:     48
   threads:     24         24         48        -24                            ok
  searches:     0.0 avg
numa nodes:       1
   elapsed:       0.255 s
   process: user: 0.232 s, system: 0.038 s, faults: 2, rss: 90.6 MiB, commit: 112.1 MiB

We further discussed this in the aforementioned memray issue, and I created a PR that exposes dynamic symbols for memray to interpose: https://github.com/apache/arrow/pull/41128
We'll see whether the memray devs decide they want to support them, since this is Arrow-specific. Ideally, there would be a "standard" way for libraries and applications to signal that certain dynamic symbols are really malloc-like calls.

So before trying to add heuristics for parallelization, perhaps we should investigate this?

Different people take different approaches to problems. I saw ParallelFor very naively posting small tasks to a ThreadPool and came up with a version that doesn't do that.
You saw this problem and decided to fix how the profiler measures memory consumption. Which is a valid strategy, but not the only one, and certainly an even bigger rabbit hole for me personally if I were to take it.

Different people take different approaches to problems. I saw ParallelFor very naively posting small tasks to a ThreadPool and came up with a version that doesn't do that.

I think there's still value to Felipe's approach, and I'd like to support testing it. I did mis-interpret results, but it does seem better to ramp up allocation with the need, instead of, by default, spinning up a thread per column.

Note that it's not really spinning up new threads, unless it's the first time the thread pool is being used :-)

Note that it's not really spinning up new threads, unless it's the first time the thread pool is being used :-)

I tried to understand the behavior of ThreadPool and my (not very confident) conclusion was that each Submit posts the task to a new thread and thread re-use only really starts if the thread pool capacity has been reached.

It's a bit more complicated. Off the top of my head:

worker threads are created on demand; if a task is submitted and there is at least one idle worker, no new worker thread is created;
there's never more threads than the desired capacity, which defines an upper limit;
tasks are not submitted to a specific thread, they are appended to a shared queue which all existing worker pop from.

tasks are not submitted to a specific thread, they are appended to a shared queue which all existing worker pop from.

Seem fare to assume that a very eager loop like
  for (int i = 0; i < num_tasks; ++i) {
    ARROW_ASSIGN_OR_RAISE(futures[i], executor->Submit(func, i));
  }

will reach capacity threads very quickly unless completing a task takes less time than the cost of making capacity iterations of this loop.

Yes, indeed. I was answering the more general question.

We ran benchmarks on @felipecrv and unfortunately the results weren't promising. With @pitrou's explanation on how to interpret the memory allocation results, and learning more about how the ThreadPool works, having a ParallelFor for one step of Arrow analysis doesn't significantly reduce memory usage. And the memory usage isn't as high as I was previously concerned it was.
I'm going to go ahead and close this issue for now! Thanks everyone for helping me look into this. @jorisvandenbossche @felipecrv and @pitrou :heart:


Unknown Parameters

What if i do not know the parameter names or the user decide to add a parameter?
For example:
[Excel Columns]
A=Col1
B=Col2
The user decide to add a column in the excel and write
C=Col3
into the ini file.
How i am able to get all parameters with a loop?
It would be nice if you could get all the parameters like this: (pseudo code)
for (int i=0; i < ini.Count; i++) {
// i = the line of the ini. 0 is the value index, since a parameter have only one value its probably always 0.
Console.WriteLine(ini[i][0].GetString(false, true));
}

You can enumerate all parameters with a foreach loop, I just added some sample code to the bottom of the readme. Parameters are not guaranteed to be displayed in order though, so you'll probably want to use linq if you expect a section to have in order parameters, like so:
foreach (var item in (from kvp in section orderby kvp.Key ascending select kvp)) {
    Console.WriteLine(item.Value.GetString(false, true));
}

This is an imperfect solution so I agree I should add an in order style as well.

Implemented ordered ini sections and files. To load an ini file in order specify the ordered=true parameter when calling IniFile.Load. By doing this the order of the section using foreach will be preserved and the section can be indexed by integer. This means both loops below (foreach and for) are functionally equivalent.
var ini = new IniFile();
ini.Load("somefile.ini", ordered=true);
var section = ini.First().Value;

var index = 0;
foreach (var item in section) {
    Console.WriteLine(string.Format("Item at index {0} is {1}", index, item.Value.GetString());
    index++;
}

for (var i = 0; i < section.Count; i++) {
    Console.WriteLine(string.Format("Item at index {0} is {1}", i, section[i].GetString());
}