New framework - Features are on even when set to off.

Defective ToolKit Feature Name: Custom Flag Names and Show Category Balance
Expected Behavior
When feature is set to off, the feature is not available in YNAB.
Actual Behavior
Even though the feature is set to off, the feature is active.
Steps to Reproduce the Behavior

Leave Custom Flag Names and Show Category Balance on Off
Click the flag or navigate away/to accounts and hover over a category balance
See things you shouldn't see (Category Balance/Edit on Flags)

Export of Toolkit Settings (Bottom Left of Settings Page)
[{"key":"CustomFlagNames","value":false},{"key":"ShowCategoryBalance","value":false},{"key":"TargetBalanceWarning","value":false},{"key":"accountsClearSelection","value":false},{"key":"accountsDisplayDensity","value":"0"},{"key":"accountsEmphasizedOutflows","value":false},{"key":"accountsRowHeight","value":"0"},{"key":"accountsStripedRows","value":false},{"key":"activityTransactionLink","value":true},{"key":"betterScrollbars","value":"0"},{"key":"budgetBalanceToZero","value":true},{"key":"budgetProgressBars","value":"0"},{"key":"budgetQuickSwitch","value":false},{"key":"budgetRowsHeight","value":"0"},{"key":"calendarFirstDay","value":"0"},{"key":"categoryActivityPopupWidth","value":"0"},{"key":"changeEnterBehavior","value":false},{"key":"checkCreditBalances","value":false},{"key":"checkNumbers","value":false},{"key":"closeReconcileWindow","value":false},{"key":"collapseExpandBudgetGroups","value":false},{"key":"collapseSideMenu","value":false},{"key":"colourBlindMode","value":false},{"key":"compactIncomeVsExpense","value":false},{"key":"currentMonthIndicator","value":false},{"key":"daysOfBuffering","value":false},{"key":"daysOfBufferingHistoryLookup","value":"0"},{"key":"editButtonPosition","value":"0"},{"key":"enableRetroCalculator","value":false},{"key":"enlargeCategoriesDropdown","value":true},{"key":"exportTransactions","value":false},{"key":"goalIndicator","value":false},{"key":"goalIndicatorWarningColor","value":false},{"key":"googleFontsSelector","value":"0"},{"key":"hideAOM","value":false},{"key":"hideAccountBalancesType","value":"0"},{"key":"hideHelp","value":false},{"key":"highlightNegativesNegative","value":false},{"key":"importNotification","value":"0"},{"key":"incomeFromLastMonth","value":"0"},{"key":"l10n","value":"0"},{"key":"largerClickableIcons","value":false},{"key":"monthlyNotesPopupWidth","value":"0"},{"key":"navDisplayDensity","value":"0"},{"key":"pacing","value":"0"},{"key":"popupCalculator","value":false},{"key":"printingImprovements","value":true},{"key":"privacyMode","value":"0"},{"key":"reconciledTextColor","value":"0"},{"key":"removePositiveHighlight","value":false},{"key":"removeZeroCategories","value":false},{"key":"reports","value":true},{"key":"resizeInspector","value":false},{"key":"rightClickToEdit","value":true},{"key":"runningBalance","value":false},{"key":"seamlessBudgetHeader","value":false},{"key":"showIntercom","value":true},{"key":"spareChange","value":false},{"key":"splitKeyboardShortcut","value":true},{"key":"splitTransactionAutoAdjust","value":false},{"key":"squareNegativeMode","value":false},{"key":"stealingFromNextMonth","value":false},{"key":"swapClearedFlagged","value":false},{"key":"toBeBudgetedWarning","value":false},{"key":"toggleSplits","value":false},{"key":"toggleTransactionFilters","value":"0"},{"key":"warnOnQuickBudget","value":false}]

System Settings
ToolKit Version: 1.0.0 (forked)
Operating System (Mac/Windows/Etc): MacOS Sierra
Browser (Chrome/Firefox/Safari): Chrome
Browser Version: 57.0.2987.133
Other Extensions: uBlock Origin

I hesitate to ask but, you did reload the YNAB page after turning the feature off, right?

I actually noticed this because I never went in and turned the features on. I was able to see both as being on when they were set to off by default.
I also tested going in and turning on/off and reloading with them still showing. It is possible it is something else I'm doing, but I couldn't think of anything else last night and tried over and over to disable the features with no success.

This happens to me as well with the new "Warn When Target Balance is Not Reached" feature. It is currently turned off. When I refresh, it displays correctly and they are all green or grey. If I subsequently navigate to any other tab (accounts or reports), then back to Budget, it will highlight all of my target balance goal categories as blue if they aren't maxed out.

Interesting. I see this behavior for the Flag Names feature but not for the Category Balance on Hover feature. However, the Category Balance on Hover is not quite right either. i.e this is what it say my TBB category is;

The real balance is;

I wish the first one was right. :) I'll open a Issue.

@dbaldon if you turn off Category Balance on Hover and navigate to Budget or Reports then back to Accounts, do you still not see the category balance? If I'm on Accounts, I don't see it until I navigate away and back, even with the feature off, then I see it.

@alanhoskins Yes, that same sequence of events does cause it to be "on".

I'm pretty certain the problem is that ynabToolKit.js is always being loaded (inserted) even when none of the features are "on". For the old framework features, the load of the feature code only occurs if the feature is on. With the new framework all the code for each feature is in ynabToolKit.js so it's always there. You can see this by doing PF12 and clicking on the Sources tab and expanding the Toolkit for YNAB structure. As you turn features on and off and then reload YNAB, you'll see the sub folders change but ynabToolKit.js is always there.
@joshmadewell does my assessment sound correct?

I'm occasionally seeing the same behaviour with the "Warn When Target Balance is Not Reached" feature. But only on Chrome, never on Firefox.

Hey @alanhoskins the fix for this should be in our current release. If you notice the issue still exists and you're definitely running the newest version of the toolkit, please reopen! Thanks!


This package has too many nonoptional dependencies

It may make sense to make the most of deps optional.

What functionality do you suggest we make optional?

numpy = "1.19.0"
pandas = ">=1.0.5"

Are relevant mostly for data-scientists.

SQLAlchemy = "1.3.18"

Not relevant for everyone doing own queries written manually.
six, pyparsing, packaging, pluggy, protobuf, py, dateutil, pytz, wcwidth,  more-itertools
Not used directly at all.

I think on the version pinning I mostly agree with you, this article lays out your case. We actually originally built this package mostly to run on Docker containers, hence the widespread use of pinning. It's more aimed to be "reusable" rather than "reproducible" now, so that's a good shout.
As far as dependencies go we will remove anything that's not being used, agreed it shouldn't be in there. SQLAlchemy on the other hand is used for our database interactions, and Dolt is a SQL database, so that's important for the doltpy.sql package, as those higher level tools are built on top of that package.
Can I ask what your use-case is? Obviously we want to develop the package in ways that make sense for our users, so any help you can give me here would be appreciated.

@max-hoffman I think the action items here are:

[ ] audit use of version pins, and make a principled decision
[ ] remove unnecessary dependencies (we talked about this earlier in the week, so might be a good nudge to just do it)

Can I ask what your use-case is?

Not quite a use case, I don't use this currently. Just saw news on an IT-related resource about a release and thought it may make sense to play around this DB a bit.
Currently I use SQLite for storage of datasets. Currently I have no use cases for versioning, because schema migration is done manually. Usually it happens as follows:

4 times a year the source of the dataset publishes a new version of dataset - the data from the previous quarter. It is a large archive of csv files.
with such datasets come free-form kind of release notes describing what's new and what unusual has happenned and what issues the dataset has.
also a set of SQL scripts comes.
I diff the scripts to the one of the previous quarter and determine the new columns in the table. Each column corresponds to an integer in the original data returned by hardware.
I google the net for the info on additional columns to get their human readable names and add them to my script, and also determine if the column is useful for me or not.
my script automatically generates the commands to add the needed columns into the table
my scripts insert the data from csv into a temporary table, and then normalize the data, moving some of them into other tables. This all is done using hand-written partially templated SQL queries called iteratively. After some amount of iterations commit is called. The amount is picked to have the time between iterations about a second. It is an extremily long process, can take a week of a constant work on a HDD. The data has primary key of 2 columns, but I have done a nasty hack, I packed them 2 into a single integer, that is a rowid. And queries by rowids are fast in sqlite. But not on random insert. I have written a new importer, that performs much better because reduces random writes by using some RAM to pools close rowids together, but I haven't tested it enough to rely on it in prod.
Then I do "fast vacuum". It performs much better than a vacuum because some journaling and robustnes against crashes is removed, but I do a backup before that anyway.
Then I can make specific analytic queries relying on the structure I encoded into rowid pretty fast (data with sequential rowids are stored on disk sequentially) and create a mini version of the DB having only a subset of info. It is very much smaller than the main db, a few MiB (~ 6MiB the last time), while the main DB is tens of GiBs (I guess more then by now it shold be > 50 GiBs, the last time I updated the dataset it was about ~ 20 GiBs uncompressed).
Then I compress the DBs at maximal compression using 7zip lzma2 (results about 2 GiB, and it'd be nice to be able to work with the main DB in its compressed state at least on reading) and upload them into a cloud storage as a backup.
then I run data-science scripts on the small db.

@KOLANICH this partial solution might be of interest to you: https://github.com/dolthub/doltcli
It's a bit easier for me to carve out a full-featured and dependency-less subsection of doltpy for engineers than re-write of the data science portions.

Thanks. Though I don't understand why it 8s called doltcli, if it contains no CLI tool. It may make sense to rename that one to just dolt (and the GitHub repo to dolt.py), and this one to dolt-datascience.

It's an internal distinction we make is between using dolt's CLI and SQL interfaces. In the future we'd like to use a raw SQL session with pymysql or another connector to implement all of the version control features. Right now shelling out to the bash/CLI commands is the most reliable way for people to use dolt in python.
You're right that the code in the python package isn't a CLI -- but that's what dolt is for, and also the pypi package dolt is taken

Bumping up on that topic - We use dolt in DS project and while it is ok for having all the dependencies it has, it is unconvenient to have many of those pinned at some old version.
So far we've been selecting doltpy == 2.0.4, as this was the best version poetry resolved for us, given our other dependencies. Now, we would like to use new doltpy features, ( e.g. https://github.com/dolthub/doltpy/pull/183 ) and if we force doltpy >= 2.0.13 - we get it, but we get lots of dependencies downgraded, which is a pain, as some might be non-patched versions with potential issues.

What specific doltpy features do you like?
Our strategy is to move most doltpy functionality into SQL itself so you can use a standard sql connector or ORM like sqlalchemy to access dolt throuugh a python interface.
As you can tell, a lot of the extra functionality of doltpy is a little hard to maintain dependency-wise.

So, doltpy allows you to do those things without running a server. Is that what you want?
If you start a dolt sql-server and then connect using a mysql connector all those equivalent functions exist but just sending in SQL queries. That's the method we support more actively. It has a number of advantages:

It works in every language
There's a really developed SQL tool ecosystem already
You only take one client dependency: the mysql connector in your language

The disadvantage is you have to run a dolt sql-server, so there is a bit more of a bootstrapping problem when interacting with dolt.
Sorry to distract from the core of this ticket. I just want people who show up here to understand what our priorities are.
In parallel, I'm looking for a resource internally to take more active ownership over doltpy. The person who conceived of it and built it left the company.

@kretes Without more info this could require a lot of back and forth. These options can unblock you immediately without action on our part depending on the context you are using doltpy:

Use pip and --no-deps, you have full control and as long as this is an internal app your dependencies do not have to be externally consistent as a library. I see that you are using poetry, not pip,  and I can understand that this is undesirable if you are writing a library package.

If you are writing a library and need to be dependency-less, the pandas helper functions are extremely thin and we can help you duplicate them into your package to minimize dependencies.

You are correct that some combination of lessening dependencies and rewriting how we manage extensions would help fix your use case, but 1) without knowing more about which deps are clashing I don't know how to immediately fix your use case, 2) lessening dependencies always runs the risk of breaking someone else who then needs to fiddle with their deps to find ones that mesh, and 3) this approach is not scalable, and we are trying to figure out a way to avoid manually releasing different versions of this package every time a user has a dependency issue.

Thanks @timsehn for sharing the background. Maybe you should at least add the current state to the README on top.
Thanks @max-hoffman for suggestions. Using --no-deps is a way to hack around it. I know I can there are multiple problems with this approach, which you are probably aware of:

I'm not getting any dependencies of doltpy, and some are required. Currently:

# pip freeze | grep dolt
doltpy @ file:///root/.cache/pypoetry/artifacts/d6/95/fe/feb697c1bdccf45552c7ce1602a3bac5504946c16b46233a42f31b09fa/doltpy-2.0.4.tar.gz
# pip install doltpy==2.0.13 --no-deps
...
# python -c 'from doltpy.cli import Dolt'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/root/.cache/pypoetry/virtualenvs/science-yd9zGFjU-py3.9/lib/python3.9/site-packages/doltpy/cli/__init__.py", line 1, in <module>
    from doltcli import Dolt, Commit, DoltException, DoltHubContext  # type: ignore
ModuleNotFoundError: No module named 'doltcli'

so I basically need to myself handle the essential dependency tree of doltpy
2. I don't know which one are optional and which one will work ok when forced to be in different version than specified in doltpy's pyproject.toml
3. I introduce a different way of managing dependencies rather than a poetry.lock, which is otherwise a standard
The whole request is to make clients' life easier and just add doltpy as any other library and expect to get the newest version with a sensible dependencies specified as ranges (not pinned).
Replying to your questions:

without knowing more about which deps are clashing I don't know how to immediately fix your use case,

This is about all pinned in https://github.com/dolthub/doltpy/blob/main/pyproject.toml#L10

some libraries are already 1 or 2 major versions behind - attrs, pyparsing

lessening dependencies always runs the risk of breaking someone else who then needs to fiddle with their deps to find ones that mesh

I'm not sure I get it - if someone found that current doltpy-s pinned versions work for them - he can stay with them, while doltpy switch from = to >= , right? We don't make it harder, but easier to pick your own version.

this approach is not scalable, and we are trying to figure out a way to avoid manually releasing different versions of this package every time a user has a dependency issue.
I agree. To get around you shouln't pin the versions but let them as broad as possible for doltpy so that as many clients can fit in the range.

Hi @kretes , thank you for taking the time to provide more context.
It would still be helpful if you shared your dependency clashes: package names and versions, if applicable.
Again, major version bumps are by definition backwards incompatible. Library developers do not always adhere to these guidelines, but the pattern generally describes a balancing act between two types of dependency problems. If dependency windows are too narrow, clients have a type-1 error, where packages that can run together are rejected by a dependency resolver because some combinations of dependency specs was overly strict (this is the issue you are experiencing). If dependency ranges are too wide, that will create the opposite type of error, where dependency resolving builds a list of packages that don't actually run together. In my experience, the second type of problem is much more difficult to diagnose and fix as a client.
I think it important to reflect on where we lay in this balancing act. And the answer is that we are probably leaning towards too strict right now. But we are not going to open unbounded ranges for every dependency. We will loosen the ones you ask for, while trying to plan for longer term solutions that remove python dependency concerns altogether.

@timsehn So, doltpy allows you to do those things without running a server. Is that what you want?
@kretes it looks to me like [we] just require pandas and CLI wrapping. It's that we don't want to write this functionality on our own

I'm in a similar position here - using the pandas wrappers to pull Dolt tables into a ML training script. I'd rather not run the SQL server for this small task as it becomes one more prerequisite to launching a training. FWIW I also use doltcli to serialize branch, author, and commit hash for data versioning, but as that package is in a separate repository for now I'm assuming it's not relevant to the discussion here?
I really appreciate the expanded numpy range in #178 since that's a common dependency for many ML/data-science packages. However, I'm still running into other issues with the version pinning and have resorted to a separate --no-deps requirements.txt for doltpy and doltcli as @max-hoffman suggested.
Here are some particularly problematic pins I've identified for various package combinations using pip-compile. Note in all cases, the output shows pins on the conflicting packages, but my input was always pip-compile -o requirements.txt tmp.txt where tmp.txt does not have any pins in order to allow the greatest chance of resolution

protobuf from ray[tune] + doltpy

protobuf<4.0.0,>=3.15.3 (from ray[tune]==2.0.0->-r tmp.txt (line 2))
protobuf==3.12.2 (from doltpy==2.0.13->-r tmp.txt (line 1))

packaging from lightning-flash[image] + doltpy: similar issues with arise for effdet

packaging>=20.0 (from scikit-image==0.19.3->albumentations==1.3.0->lightning-flash[image]==0.8.0->-r tmp.txt (line 2))
packaging>=17.0 (from pytorch-lightning==1.7.7->lightning-flash[image]==0.8.0->-r tmp.txt (line 2))
packaging>=20.9 (from huggingface-hub==0.10.0->timm==0.6.11->lightning-flash[image]==0.8.0->-r tmp.txt (line 2))
packaging (from lightning-flash[image]==0.8.0->-r tmp.txt (line 2))
packaging (from torchmetrics==0.9.3->lightning-flash[image]==0.8.0->-r tmp.txt (line 2))
packaging (from lightning-bolts==0.5.0->lightning-flash[image]==0.8.0->-r tmp.txt (line 2))
packaging==20.4 (from doltpy==2.0.13->-r tmp.txt (line 1))

python-dateutil from icevision + doltpy

python-dateutil>=2.8.1 (from pandas==1.5.0->doltpy==2.0.13->-r tmp.txt (line 1))
python-dateutil==2.8.1 (from doltpy==2.0.13->-r tmp.txt (line 1))
python-dateutil>=2.7 (from matplotlib==3.6.0->yolov5-icevision==6.0.0->icevision==0.12.0->-r tmp.txt (line 2))
python-dateutil>=2.8.2 (from jupyter-client==7.3.5->ipykernel==5.5.6->icevision==0.12.0->-r tmp.txt (line 2))

I'm confused where the hard pins on protobuf, packaging, and python-dateutil are getting pulled into doltpy since I don't see them in the setup.py

In my experience, the second type of problem is much more difficult to diagnose and fix as a client.

You assume that a user of a python is a housewife using packages tor python as an end user. But packages of python are usually used by programmers as parts of own software. So it makes no sense not to break because of error of possible incompatible API change (which usually doesn't affect the most of libraries, so there is a big chance that even if major version has changed, everything will still work fine) and always break instead on a purely artificial indicator like version number change.

I took a pass at this yesterday, and the dependency resolver has been spinning for 14+ hours with the range constraints on those three packages. The volume of dependencies in Doltpy is more exponential every time we loosen one of these. The setup.py was supposed to track the pyproject.toml, but has fell out of maintenance since Doltpy is deprecated.
If I were you I would just take doltcli + the parquet read/write functions from doltpy. Your use case is legitimate but we need to solve it in a different way, with an embedded Dolt with Python bindings. Our customers pay for OLTP database features right now, until that changes we are focusing on server improvements.


[WIP] Docker in Docker support

DO NOT MERGE, STILL WORK IN PROGRESS
Replacing/deprecating: #198 from @sukovanej
Purpose
When running Docker-In-Docker this plugin would fail to run because the volume mount path given is based in the docker container, not the host.
Reasoning
To help increase the amount of compatible CI/CD systems/configurations that this plugin can run on.  Namely Gitlab Autoscaling Runners and Jenkins Runners.
Result
To implement this I did the following...

When running this plugin it detects if we are in docker by checking for the /.dockerenv file
If inside docker AND we set dockerizePip to true, then we are in docker-in-docker mode
Inside this mode, it uses docker to query the host to ask for the overlay mount of the current container, and it uses that as a prefix to any volume mounting request in docker
Additionally, in this mode for caching purposes it intentionally does NOT allow the automatic Appdir plugin for caching because this may produce a volume mount that is invalid.  This edge-case happened on two of the systems I manage, so I came up with a solution... instead it puts a folder at the root of the volume to use for caching purposes.  Yeah I know... another folder in a random place, but I don't have a reliable alternative.
Finally, to support unknown edge-cases, I added a new configuration option called dockerInDockerPath that allows the user to specify what volume path to pass into docker.  This will prevent the system from trying to look this data up.  According to a few authors in #198 they said they have "fixed/known" mount points.  And although I believe the automatic detection in this plugin will handle it, incase it doesn't this is a fallback.

Related to:
#198
Instructions:
To try this PR, from the root of your project run the following commands.  Assumably run these from within' your first layer of Docker, in a container with a functioning docker command (eg: run docker ps successfully).  Also, ensure your serverless.yaml has dockerizePip: true.  It shouldn't matter if your Docker command works because of volume mounting the docker.sock, or if you are using the sidecar mechanism that ends up hosting docker on a TCP port routed through the sidecar.  I confirmed both situations work.
npm remove --save serverless-python-requirements
npm install --save github:andrewfarley/serverless-python-requirements#dockerindocker
serverless package

TODO:

[ ] Have people test it and give feedback, iterate
[ ] Add tests (if possible?  Does our CI support DinD?  Or maybe these tests we run locally/manually for now)
[ ] Test/validate further on Kubernetes
[ ] Add documentation to the homepage about DinD support
[ ] Add example for GitlabCI for people to use this easily
[ ] Wait for upstream tests to work/pass properly and rebase this so we can pass as well

Pinging for visibility from #198 - Looking for reviewers/testers...
@ccampell / @brettdh / @marlonchalegre / @sukovanej / @heri16

@AndrewFarley I'll have a chance to run it through our CI/CD Sunday to test it out. Thanks again!

@AndrewFarley By design the Jenkins Agents are running as non-root users, which may explain the permission denied. However, I am not sure of a graceful workaround for this. The deployment happens from the Jenkins Pipeline via sh, so doing this from within the context of a Dockerfile (and therefore root) is not really an option.

@ccampbell if it says docker command not found then you do not have docker in docker support or the image you are using doesn’t have the docker command installed which is a prerequisite for this plugin to work at all with docker in docker support.
Are you sure you need docker in docker support?   It sounds to me like you can make the Jenkins runner use whatever image you want, correct?  If so you can have it run the requisite lambci image and disable the unnecessary docker support.

@ccampbell if it says docker command not found then you do not have docker in docker support or the image you are using doesn’t have the docker command installed which is a prerequisite for this plugin to work at all with docker in docker support.

@AndrewFarley I know that is what the error usually means, but in this context docker is installed; just not in the Agent container. How else could you detect the docker container the process was running in? Your output here:
Serverless: Docker-In-Docker: We have detected an docker-in-docker configuration.  NOTE: This feature is in beta for this plugin, verbose output for now
Serverless: Docker-In-Docker: Detected container: 91cad0f14d0a061338c37a664f58fd10f2d6336d9c32f6ca9a1113ec192cb2d6

To my knowledge, you wouldn't be able to pull the container Id (via the method you previously linked in #198 ) without Docker installed.

Are you sure you need docker in docker support? It sounds to me like you can make the Jenkins runner use whatever image you want, correct? If so you can have it run the requisite lambci image and disable the unnecessary docker support.

The Jenkins CI/CD setup with DinD is a bit convoluted. I have created an Ubuntu 18.04 Docker image with both NodeJS and Python installed and configured. The Jenkins tutorials instruct the user to run the DinD image, and run the jenkinsci/blueocean image as a container in Docker.

The DinD image is supposed to provide the ability for the jenkinsci/blueocean container to be able to execute Docker commands.

The Ubuntu 18.04 image I created serves to mirror the development environment on my local machine for testing. The jenkinsci/blueocean image utilizes the DinD image to deploy Jenkins Agents. We utilize the jenkinsci/blueocean image with an Agent container that is the Ubuntu 18.04 image. From here, we execute normal Serverless commands from inside the Agent/Ubuntu 18.04 container. So, utilizing the Jenkins CI/CD pipeline by running Jenkins Dockerized, does require Docker-in-Docker; or it requires bind-mounting the Docker socket as discussed briefly in #198. In our use case, the Ubuntu 18.04/Agent image is deployed by the jenkinsci/blueocean container. We would like the serverless-requirements-plugin to still function from within the Agent/Ubuntu 18.04 Docker container which is deployed by the jenkinsci/blueocean Docker container.
Of course there are alternatives to this, such as not running Dockerized Jenkins, bind-mounting the Docker socket and using the sidecar pattern, or creating your own container with Docker installed and then installing and configuring Jenkins within the Dockerfile somehow. So do we really need docker-in-docker? No, but the Jenkins CI/CD folks recommend the Dockerized Jenkins approach for getting up and running quickly. So it's a pretty common use case to have a Jenkins container deploying another Agent container, which would be executing the actual Serverless deployment commands. I can try installing Docker in the Ubuntu 18.04 Agent container, but this is redundant. The Agent doesn't need to run Docker commands, however the parent Jenkins container does.
Does that clarify our intended use case?

Detecting the container id doesn’t relate to the ability to run docker or the docker command.  It honestly sounds like all you need to do is install docker in your pipeline if you are sure it is bind mounted to make dind work.
Could you try installing docker?

Detecting the container id doesn’t relate to the ability to run docker or the docker command. It honestly sounds like all you need to do is install docker in your pipeline if you are sure it is bind mounted to make dind work.
Could you try installing docker?

You're right, sorry; Docker isn't installed in the Ubuntu 18.04/Agent container. I should have made that a bit more explicit. But my point is that it really doesn't need to be. The Jenkins Agent container doesn't need to execute Docker commands, only the Jenkins jenkinsci/blueocean parent container needs to execute the Docker commands in order to deploy the child Agent container.
If it would be helpful for you, I can try installing Docker on the Ubuntu 18.04/Agent container. But again, we wouldn't be utilizing Docker commands inside the Agent container, so this would be a step we would only undergo if it made the plugin function correctly. In some use cases, maybe there would be a need to run Docker commands inside the child Agent container, but I don't think that is nearly as common of a use case.
We want Docker-in-Docker support in the sense that the plugin is supported by the child Agent container that the Jenkins container deploys (via the DinD image). Does that make sense?
Would you like me to try again with Docker installed in the Agent container to aid in debugging?

I'm not sure I entirely understand.  It sounds like you "think" you want docker-in-docker support but you don't really and should just use a lambci image as the jenkins "agent" runner.  Or, if your setup is configured so DinD should work, you don't have docker installed to confirm if it actually works.  I would first go install docker in your agent container and see if it works.  If it does, then re-try this fork/branch.
If that doesn't work, let's talk interactively to figure this out.  @ccampell Can you jump on the serverless slack team http://serverless-contrib.slack.com/ and chat with me interactively... @farley on there.

@ccampell If your parent container supports running commands to initialise Jenkins runners, then it sounds like a simple solution would be to make a runner that is meant for serverless that uses the lambci images, on which you install a jenkins runner as well.  Then you can just start an agent that already has an environment which wouldn't require docker within it.

@AndrewFarley Yeah, It's not the most graceful setup; but it's what the Jenkins folks recommended.
RUN apt-get install -y nodejs
...
RUN npm install -g serverless
...

We don't have Docker installed in the child "agent" container that the parent Jenkins container spawns (i.e. the Dockerfile above), and it is this "agent" container that we sls deploy from (filename Dockerfile in the above Jenkins pipeline code). We do have access to normal Docker commands inside the parent Jenkins container, presumably via the DinD image. As the Jenkins tutorials state:

In order to execute Docker commands inside Jenkins nodes, download and run the docker:dind Docker image using the following docker container run command:
docker container run --name jenkins-docker --rm --detach \
 --privileged --network jenkins --network-alias docker \
 --env DOCKER_TLS_CERTDIR=/certs \
 --volume jenkins-docker-certs:/certs/client \
 --volume jenkins-data:/var/jenkins_home \
 --volume "$HOME":/home docker:dind

It is the above sh command block which performs the sls deploy that does not work with the serverless-python-requirements plugin in its current state. And that is what we want supported; to be able to run the plugin from within the "agent" container (defined by our Dockerfile which Jenkins deploys). We can run Serverless just fine from our Jenkins pipeline, but not with the serverless-python-requirements plugin. Presumably since it is executing from within a child "agent" container, hence the request for nested docker support.
@AndrewFarley As per your suggestion, that is a good idea and would simplify our CI/CD setup. However, we don't really want to "very closely mimic the live AWS Lambda environment " as in lambdaci. Our CI/CD pipeline does a full live deployment via our agent container, and we run tests in the live cloud. We have had discrepancies simulating the cloud locally via plugins. So we prefer to test against a live deployment under a unique stage name. I haven't used lambdaci before so I can't speak to its ability to replicate the cloud offline.
I'll hop on the serverless chat and we can discuss tomorrow, if you are available? I wish I could make this more clear, sorry for being so verbose! Again, thank you for your time on this! The plugin works great when we deploy from the host machine. It does not work at all when we have Jenkins run the deployment command from inside the "agent" container as I have demonstrated above.

@ccampell I think I am getting a better picture of what you have in place, but still not a full picture.  I think you have the wrong picture of the "mimicking the Lambda environment" means.  In that, in this scenario all it means is you are using a different container.  From what I see above, it sounds like you could just change your Dockerfile to FROM lambci/lambda:build-python3.6 and then your problem would go away.  Nowhere did I suggest changing your testing to be run locally, or anything.  This is merely for getting the serverless-python-requirements plugin functioning.
If you made this plugin work with Docker support enabled, that's all it is doing for you, starting up another docker container with this exact image.  You would just be simplifying things, is all I'm saying.
Anyways, Slack me up when you get a chance, I'm in a weird timezone in the future (Auckland, NZ) but ping me on that serverless slack and we can find a time that we're both online see if I can get a better understanding.

@AndrewFarley I see what you're saying! I thought you were advocating to use lambci:

... for running your functions in the same strict Lambda environment, knowing that they'll exhibit the same behavior when deployed live. -lambci

I misunderstood, and thought you were pitching this as a workaround for not being able to sls deploy live with the plugin. I hope you can understand my confusion, seeing as this is a touted use case of lambci.
I did not realize that there were additional dependencies for the plugin besides those required for the Serverless framework itself, and those brought in by npm during the plugin's installation. I'm not trying to be obstinate, I will definitely try your suggestion of using the lambca image to get the plugin to work. And I would be happy to install Docker on the agent image if it helps with your debugging for #484.
I don't expect the software to magically solve any problems. I am aware that it is my problem to get the software working. I had just hoped that it would still function in a child Docker container without additional modifications, like it does on the host OS. I am definitely guilty of (perhaps incorrectly) thinking that #484 would solve this problem.
I have spent valuable time explaining my organizations' use case above, in order to draw attention to a fairly common CI/CD setup that is not currently supported out-of-the-box by the plugin. I did not go through this trouble, with the expectation that you would solve this problem for us. As I have tried to reiterate above; I appreciate you spending your valuable time both: responding, and considering our use case as it pertains to #484 if/where applicable. I am working from the United States' Eastern Coast (EST time). I'll try and ping you on slack at a time that is reasonable for Auckland, NZ. Thank you again, for all your efforts on this!

Used the temporary fix with VSCode's dev in container, running serverless cli. Was getting the /var/task/requirements.txt not found error, after fix installed, it worked fine, deployed to aws Ok.
Thanks for fix !

This fails for me on GitLab CI with:
 Serverless: Docker-In-Docker: servicePath: /root/.cache/serverless-python-requirements/508f2850e7c1fa6ddeef9255f33ec8f2ae6c14a09ea5b1731da87214b4de00c2_slspyc
 Serverless: Docker-In-Docker: We have detected an docker-in-docker configuration.  NOTE: This feature is in beta for this plugin, verbose output for now
 Serverless: Docker-In-Docker: Detected container: 0482597c5e09e4565a2d9c9425fadaf4a76604da5fdb46cf776e432199e72295

   Error --------------------------------------------------

   Error: Error: No such object: 0482597c5e09e4565a2d9c9425fadaf4a76604da5fdb46cf776e432199e72295

       at dockerCommand (/builds/projectdir/node_modules/serverless-python-requirements/lib/docker.js:49:11)
       at getBindPath (/builds/projectdir/node_modules/serverless-python-requirements/lib/docker.js:153:14)
       at installRequirements (/builds/projectdir/node_modules/serverless-python-requirements/lib/pip.js:198:37)
       at installRequirementsIfNeeded (/builds/projectdir/node_modules/serverless-python-requirements/lib/pip.js:555:3)
       at targetFuncs.filter.map.f (/builds/projectdir/node_modules/serverless-python-requirements/lib/pip.js:598:35)
       at Array.map (<anonymous>)
       at ServerlessPythonRequirements.installAllRequirements (/builds/projectdir/node_modules/serverless-python-requirements/lib/pip.js:592:8)
       at ServerlessPythonRequirements.tryCatcher (/builds/projectdir/node_modules/bluebird/js/release/util.js:16:23)
       at Promise._settlePromiseFromHandler (/builds/projectdir/node_modules/bluebird/js/release/promise.js:512:31)
       at Promise._settlePromise (/builds/projectdir/node_modules/bluebird/js/release/promise.js:569:18)
       at Promise._settlePromise0 (/builds/projectdir/node_modules/bluebird/js/release/promise.js:614:10)
       at Promise._settlePromises (/builds/projectdir/node_modules/bluebird/js/release/promise.js:693:18)
       at Async._drainQueue (/builds/projectdir/node_modules/bluebird/js/release/async.js:133:16)
       at Async._drainQueues (/builds/projectdir/node_modules/bluebird/js/release/async.js:143:10)
       at Immediate.Async.drainQueues [as _onImmediate] (/builds/projectdir/node_modules/bluebird/js/release/async.js:17:14)
       at runCallback (timers.js:705:18)
       at tryOnImmediate (timers.js:676:5)
       at processImmediate (timers.js:658:5)
       at process.topLevelDomainCallback (domain.js:126:23)

I've tried setting dockerInDockerPath to ${env:CI_PROJECT_DIR}, but then I get this error again:
ERROR: Could not open requirements file: [Errno 2] No such file or directory: '/var/task/requirements.txt'

The logged docker run command is:
Serverless: Running docker run --rm -v /builds/user/project/.serverless\:/var/task\:z -v /builds/user/project/.serverless\:/var/useDownloadCache\:z lambci/lambda\:build-python3.7 /bin/sh -c 'chown -R 0\\:0 /var/useDownloadCache && python3.7 -m pip install -t /var/task/ -r /var/task/requirements.txt --cache-dir /var/useDownloadCache && chown -R 0\\:0 /var/task && chown -R 0\\:0 /var/useDownloadCache'...

I'm using package.individually, not sure if that's relevant, though.

The only thing that's worked for me was reverting back to the 5.1.0 release and setting cacheLocation: ./.serverless/.requirements_cache as mentioned in https://github.com/UnitedIncome/serverless-python-requirements/issues/106#issuecomment-435147845.

Just tested this branch locally and it worked nicely. I would love to be able to do the following:

Node Container - Yarn installs serverless for use in CI
Python Container - Used to package the lambdas

Currently i have a bloated python-lambci container which also has Node in order to run the serverless framework and package. This works but i much prefer the Docker in Docker method.
Whats left in order to get this PR moving again?

Please see #550

Since it's my baby, I'll help this through the finish line.  I'm glad this has helped some people, I confirm it helps make this plugin work for me in some previously challenging environments.  I think what's left really is on the checklist above...
Rebase
Add tests (if possible? Does our CI support DinD? Or maybe these tests we run locally/manually for now, will confirm)
Add documentation to the README about DinD support and how to use it
(optional) Add example for GitlabCI / CircleCI for people to use this easily (this might be good for this plugin overall)

Any updates on this @AndrewFarley? Unfortunately gitlab dind still doesn't work for me on your branch.

@alecgerona I'm not sure exactly what's missing or needed for this branch to be able to merge, its usefulness seems questionable at best and it doesn't seem to have solved an actual problem.
At arms length when I heard of this desire/interest and saw the original MR I thought "yeah, I have had this problem, so let me implement this feature".  And I did, but, especially having gone through it, thinking of its actual uses, every alternate use of this plugin is better and in (some) ways simple than using DinD.
As I said above I believe, I've used this branch successfully with Gitlab (self-hosted) dind runners on Kubernetes, and locally on Linux and Mac without issue.  Although, that cluster I ended up removing DinD support because it's insecure as hell and using non-dockerized native Linux support.  Generally in my experience anyone doing DinD is often a sign of "doing something wrong" and there's often a better solution, as my thread above with someone highlighted.  There seems to be a big lack-of-understanding of how "else" this plugin can be used besides DinD.  If you're already "in" docker, you can just be sure to run in a Linux container with Python support so it can already work without requiring DinD.  If you need to run this along side whatever native tools you have that are in a docker container, just put this in your docker container and add NodeJS and then run your serverless commands in that container.  You just bypassed the need for DinD and the bad/insecure practice of it.
I'd love to hear if there's anyone subscribed to this thread that can really justify continuing work on this, otherwise I'll likely just close and abandon the PR.  Almost every use-case I've heard can be done differently, and better from a security point of view.  Thoughts?


Create large text field to enter 300 chars or more.

I'm trying to create a customer support form that lets a user describe the issues they are having. I'm not sure how to create a large text field in tcomb

type attribute = textarea, see https://github.com/gcanti/tcomb-form/blob/master/GUIDE.md#textbox-options

I tried setting the type attribute but nothing happened
Code:
const tcombForm = t.struct({
  test: t.String
    });

const options = {
 fields: {
   test: {
     type: 'textarea'
    },
  }
};

Just tried with
const tcombForm = t.struct({
  test: t.String
})

const options = {
  fields: {
    test: {
      type: 'textarea',
      attrs: {
        rows: 20
      }
    }
  }
}

and works fine

Thanks, but I tried your code in Atom and in a tcomb virtual playground here https://gcanti.github.io/resources/tcomb-form/playground/playground.html ...yet it still didn't work.
Do you have a link to a working example that I could look at?

Beware the playground is outdated

O ok that makes sense, I still tried the code in a hot loaded RN project but it didn't work. Is there a code example I could look at?

Wait, RN means React Native? Not sure if tcomb-form is able to run there..

Yes React Native, I've been using tcomb forms for my project and so far everything else has worked (forms, validation, styling) except for the text area

I'm not by any means a mobile developer so maybe in the meanwhile something has changed, but I thought you have to use tcomb-form-native with RN

O no you're correct, I guess I posted this in the wrong thread.
Thanks!


Add more CIDR ranges for AWS backing services

What
We are starting to run out of IPv4 addresses in production (London) because we only have 3 * /24 which is max 768 (not including reserved)
This PR adds 6 new /24 blocks across AZs
This takes our theoretical per region capacity from 768 single instances to 2304 single instances
Before we could use a CIDR in the security group definition (although it was a bit too big) because <IP_ADDRESS>/22 encapsulated 10.0.{52,53,54}.0/24
However now there are more, there is no one CIDR range which neatly contains all new services, instead we can use the start and the end of the CIDR ranges, as long as they are ordered numerically and we update the correct key in the output variable
Along the way, we can remove zone_index and zone_labels variables which are no longer used
How to review
Code review
Deploy this to your development environment
Ensure that cf security-group elasticache_broker_instances and cf security-group rds_broker_instances are correct
Do something like this for i in $(seq 1 9); do cf create-service postgres tiny-unencrypted-11 test-subnets-$i; sleep 3; done and check that databases can be created in subnets other than 10.0.5{2,3,4}.0/24
Do the same but for Elasticache
Who can review
Not @tlwr

Please approve but do not merge, as I am waiting for clarification from AWS support

AWS Support is insisting that silence is the best course of action for customer support
After a lot of googling and some more manual testing I have found:

When you create a new subnet group, take note the number of available IP addresses. If the subnet has very few free IP addresses, you might be constrained as to how many more nodes you can add to the cluster. To resolve this issue, you can assign one or more subnets to a subnet group so that you have a sufficient number of IP addresses in your cluster's Availability Zone. After that, you can add more nodes to your cluster.

From ElastiCache docs
Theoretically RDS should do the same...


Incompatibility with LTSC

Describe the issue
The application isn't compatible with LTSC version of Windows 10 (unlike official WSL distros).
There are few possible scenarios I tested.

Without Windows Store installed

Installing with 'the zip method' the Arch.exe immediately exits without any error notices.
Installing the appx with PowerShell is successful but the application isn't usable. The rootfs gets created in the location of the original appx (desktop in my case) and Arch.exe immediately exits.

With Windows Store installed

Installing with 'the zip method' the Arch.exe exits with error HRESULT: 0x80070057
The appx can be installed normally and the application behaves normally, expect any configuration (Arch.exe config --args) leads to the same error HRESULT: 0x80070057

Expected behavior
Official WSL distros allow installation without the need for Microsoft Store, either with PowerShell Add-AppxPackage or by extracting the appx contents and using the contained exe directly. See documentation for manual install and server install.
https://docs.microsoft.com/en-us/windows/wsl/install-manual
https://docs.microsoft.com/en-us/windows/wsl/install-on-server
Enviroment:
Windows 10 Enterprise N LTSC 2019 (1809, build 17763)
WSL 1
ArchWSL <IP_ADDRESS>
Clean zip and appx
Additional context
I'm not expecting a fix since this a very edge use case. More of an FYI that might be worth adding to known issues.

Hmm...
It worked fine on My Windows Server 2019 Build 17763 with Add-AppxPackage.
I don't have a Enterprise LTSC testing environment, sorry.

It works in LTSC.

Usually error HRESULT: 0x80070057 meant that I forgot to enable the Windows Subsystem for Linux on Windows 10 before running the Arch.exe. Since you are on LTSC which is based on Windows 10 build 1809, you won't be able to use the WSL2 version. Use the instructions for WSL1.


UDP port is inaccessible

Describe the problem
It seems like any UDP based services are inaccessible between nodes even if "Allow ALL between SRC and DEST" is enabled in access control.
To Reproduce
Steps to reproduce the behavior:

Enable "Default" rule in Access Control page.

Listen udp port in one node by executing "nc -ul 5001"
Execute the following command to test udp port on other node 'echo "hello" | nc -u {{node_ip}} 5001'
See error

Expected behavior
There is "hello" printed in server node.

Hello @fbzhong is this issue happening with peers running which version and what are the operating systems of the peers?

Those nodes are all running 0.21.7 netbird, and OS includes Mac 13.4.1 (M1), Ubuntu 22.04.2 LTS (amd64), AlmaLinux release 8.5 (amd64).
Server:

Client:

same, it seems only happen between mac and linux

Same happens here but between two windows machines v0.21.8

Hello @fbzhong @gpncarl @9kko , can you validate the new version 0.21.10?

Hello @fbzhong @gpncarl @9kko , can you validate the new version 0.21.10?

yeah, it works for me

Hello @fbzhong @gpncarl @9kko , can you validate the new version 0.21.10?

In my case it isn't fixed, but I'm trying to remote connect through moonlight/sunshine and it seems to get slightly further now but still throwing errors about udp ports, so I'll do some troubleshooting of my own as well.

@9kko, can you confirm if the issue happens when the windows firewall is disabled?

@mlsmaycon still happening, ye.

In that case, can you confirm that both clients are using the latest version? Besides that, we are using an MTU smaller than the default, 1280; can you confirm that both peers have the same MTU for the netbird interface?
It may be faster if you reach out via our Slack channel


"Șoimari" is listed in the drop-down menu

The commune is  listed in the drop-down menu alongside its corresponding county, according to the law
Preconditions : the website (https://peviitor-ro.github.io/ui.orase/) is up and runing. After every step delete the text you typed from the search bar.

Step 1
Write in the search bar "Tomșani"
Expected results
The location appears in the drop-down menu as "Comuna Tomșani, PRAHOVA"


Improve Dex Flapping Alerts

Background:
This relates to enabling alerts on Dex https://github.com/giantswarm/roadmap/issues/629
And yesterday we had a relatively high error rate on Dex Alert.
Todo:

Investigate root cause
Fine tune the count threshold or increase the time window for which the errors are captured.

Postmortem was created for this issue: https://github.com/giantswarm/giantswarm/issues/20458


Dev/threaded plot render

Rendering of plots moved to individual low-priority threads, which are able to drop frames

When resizing old texture is used when the new one isn't ready yet
On the first open a momentary black screen can appear (but it's better than freezing the window)
To further decrease CPU bottleneck cairo and plotters-cairo crates are compiled with opt-level 3

This notably prevents LACT GUI unresponsiveness in the Graphs subwindow

On my system speedup for snapshot() function is 100x. From 4-5ms to 40-50us.

Plots look & feel further improved

Throttling graph jumping around is fixed by doing more data preprocessing instead of margin
Line thickness increased to 2
Supersampling fixed to correctly adjust to any sizes
Supersampling changed to 4x for better antialiasing
Legend is using filled rectangles now

GUI benchmarks removed, sorry

The CI errors can be ignored, it's due to the fork not having a package signing secret.

Overall good changes, but I want to ask - was the plot rendering slow for you before? On my system the UI remains responsive even in a debug build, the only thing that is laggy is resizing the charts window. 4-5ms sounds a bit high for the snapshot period, on my system it's 2.7ms according to the old benchmark even before adding opt-level to plotters.

I think issue lies with my usage, as I like to fullscreen all the nice graphs we have.
And detaching it from GUI thread gives us room for higher supersampling. As currently this is 4x faster, because we render in parallel.

Oh I see, I think we need to increase scaling bounds for the Window or decrease text size. I use Polonun tiling in KDE, it seems it was always resizing the Window, that's why I didn't notice.
-------- Original Message --------
On 10/23/24 10:58, Ilya Zlobintsev  wrote:

@ilya-zlobintsev requested changes on this pull request.
On my system the text is way too big (at least at the default window size). Do you happen to use a high DPI screen with scaling? Maybe that's why it's different on your screenshots.
image.png (view on web)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Default size:
Fullscreen:


Question re: B series VM cache drive size, since API returns B series as supporting Ephemeral OS Disks

Our team has noticed that Azure VM data returned via API indicates that B-series VMs support ephemeral OS disks. The ephemeral OS disk documentation page no longer specifically reflects what VM series are/aren't supported, so we assume the B series VMs are now supported.
The Azure portal doesn't allow me to create a B series VM - even one with 20 CPU - with ephemeral OS disks because the cache drive size isn't large enough.
The B series section of the general compute VMs documentation page doesn't display the amount of cache drive space each VM size has. The D series page (Ds v3, for example) does show the amount of cache drive space.
Are you able to include this data point as a column in the B series documentation?
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0cd2e24b-0fd3-d698-2840-3f8206933026
Version Independent ID: 832dc371-480a-c74a-e956-e1904473af31
Content: B-series burstable - Azure Virtual Machines
Content Source: articles/virtual-machines/sizes-b-series-burstable.md
Service: virtual-machines
Sub-service: sizes
GitHub Login: @ayshakeen
Microsoft Alias: ayshak

Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

We are working to address the consistency across the board for the sizing docs. This is in our backlog of things to address.
#please-close


Updated etc to v3.1.0-rc.1

We won't update etcd version until 3.1 stable release.
We also need to update vendoring.

@hongchaodeng ah ok - just thought that the RC would be more stable than the first alpha

@w0mbat
We haven't seen any major stability problem in etcd3 so far. That includes heavy testing with large scale deployment.
Of course, we encourage your deployment to upgrade to latest etcd version as much as possible. That's why we built etcd operator to do it.
Meanwhile, you can deploy your own yaml.

@hongchaodeng ok sure - we already used it down-upstream with the rc version


Add sparse compatibility layer.

This PR adds a compatibility layer for sparse.

Given that JAX also doesn't have CI and we already have CI for the Array API in sparse, I feel this is complete.

Can you update the docs. If you search for the places where JAX is mentioned you can also mention sparse there in the same way.

Also sparse can be added to the same the places where jax is tested in the tests.

Can you update the docs. If you search for the places where JAX is mentioned you can also mention sparse there in the same way.

Done in https://github.com/data-apis/array-api-compat/pull/134/commits/d3c6636bdcf878b98711373c9fab99b74b924f6d

Also sparse can be added to the same the places where jax is tested in the tests.

Done in https://github.com/data-apis/array-api-compat/pull/134/commits/855756d17727bb2998c846a7c9a230131a525e46

CI seems to fail with:
E           ImportError: Numba needs NumPy 1.22 or greater. Got NumPy 1.21.

I don't see how we can get around this; Numba is one of the requirements of sparse.

The PyTorch failures seem to be unrelated to this PR, from a quick glance.

This page should be updated too https://github.com/data-apis/array-api-compat/blob/main/docs/supported-array-libraries.md

This page should be updated too https://github.com/data-apis/array-api-compat/blob/main/docs/supported-array-libraries.md

Done in https://github.com/data-apis/array-api-compat/pull/134/commits/b77472d1c9ec9c32b6932c7f2153da2f096071e0.

OK, this looks good. Let me know if you need this released soon. Otherwise, it might take a bit because I need to figure out what is going on with the PyTorch failures.


Download page -- American dates and duplicate folders

Hello, I was about to download the latest version of Gitea and two things struck me while viewing it.

It's sorted using the American format (MM/DD/YY), consider switching to something more international like DD/MM/YY or YYYY-MM-DD. See https://en.wikipedia.org/wiki/Date_format_by_country for more.

Why does every major release have a 1.2 and 1.2.0 release folder (for example). Notably they aren't updated at the same time either, which might lead to some confusion regarding which is the latest version.

Answer to second question - 1.2 release folder contains latest 1.2.x version (built from branch release/1.2)

@sondr3: If you want to change the dates on the download site to an international date format, here is probably the appropriate place to change: https://github.com/dockhippie/caddy/blob/master/rootfs/etc/caddy/browse.tmpl#L170 You'll need to submit a PR, or create an issue there.


Add .gitignore

Added the .gitignore that's used  by the best practices wg.  Made sure it isn't ignoring files within a directory named 'icon' (and reverted the test file)

lgtm


load react unity script slow

load with react unity script(not development build)
https://user-images.githubusercontent.com/44422450/128189662-9c8dce92-0063-478e-989f-ab99b96b19ea.mp4
disable react unity script
https://user-images.githubusercontent.com/44422450/128189948-f91436a4-5a60-4546-85bc-c2c6e3537acd.mp4
is there any settings not correct?

Initial loading in mobile can be slow, as ClearScript is not available in mobile and we need to use Jint engine. Thousands of Javascript code is executed to run React. I am constantly adding new features to ReactUnity but not all of them is optimized for performance yet. There is certainly a room for improvement in CSS and initial element creation.
But a more fair comparison would trying with a UI with similar elements without React part. Loading Unity UI itself can be slow as well.


Include babel config

We should update the babel config to control what we're generating.
Specifically, we probably want to turn loose mode on.

Closed via #18.


Require static memory allocation for PyCapsule names

This PR fixes a technical overlook. According to the Python documentation, the only requirement for PyCapsule names is that it must outlive the capsule, but it can be either statically or dynamically allocated. For the latter, the suggestion (not requirement) is to free it when the destructor is launched.
This brings in two issues. First, the DLPack protocol requires the consumer to overwrite the name, but if the name is dynamically allocated, the following operation would raise a compiler warning to the very least:
const char* old_name = PyCapsule_GetName(capsule)
free((void*)old_name);  // lost constness
int result = PyCapsule_SetName(PyCapsule_GetName, new_name);

A further problem is we do not know if free is the correct deallocation routine, which leads to potential crash hazard.
The second problem is a symmetric one w.r.t the 1st: if the consumer also allocates a name dynamically, by the time of destruction it could be freed by the producer's (mismatching) deallocation routine.
This PR suggests a simple fix by asking all libraries to allocate the names statically. This has no practical impact because it's already the status quo, at least in CuPy and PyTorch.

cc: @seberg @tqchen

Will merge. Any revisions can be addressed in follow-up issues/PRs.

Thanks all!


Emit parens around type-asserted binary operators

Fixes #9766

Anyone?

Last call :bell:

:+1:


Trying to set up in multi module project. Getting error in generated file

Summary
Trying to set up in multi module project. Getting error in generated file
Version
2.5.2
Description
I'm trying to set up apollo in multi module project following this guide. I have added generateApolloMetadata.set(true) in shared module. After executing task: generateApolloSources in shared module, I'm getting errors in some of the generated files. Code in generated file looks like this:
data class SomeClassNameInput(
  val someFieldName: Input<List<SomeObject?>> = Input.optional(listOf("null"))
) : InputType {
...

error description:
Type mismatch:
required: List<SomeObject?>
found:    List<String>

If I remove generateApolloMetadata.set(true) from shared.gradle and run task: generateApolloSources again, files with errors described above are gone

Hi 👋 ! It looks like one of the default values for someFieldName is badly interpreted. This is most likely due to bug https://github.com/apollographql/apollo-android/issues/2727
My guess is that this is happening when enabling multi-module because multi-module generates all input types. From https://www.apollographql.com/docs/android/advanced/multi-modules/#big-schemas:
When using multiple modules, Apollo Android will generate all possible Input Types and Enums in the root module, and not only the used ones. This is because there is no way to know from the parent module what types are going to be used in feature modules.

When you disable multi-module, SomeClassNameInput doesn't get generated and therefore there's no compilation error.
As a workaround, until #2727 is fixed, you can set alwaysGenerateTypesMatching.set(emptyList()) in your gradle configuration and that should remove the class again.

Hi 👋 ! It looks like one of the default values for someFieldName is badly interpreted. This is most likely due to bug https://github.com/apollographql/apollo-android/issues/2727
My guess is that this is happening when enabling multi-module because multi-module generates all input types. From https://www.apollographql.com/docs/android/advanced/multi-modules/#big-schemas:
When using multiple modules, Apollo Android will generate all possible Input Types and Enums in the root module, and not only the used ones. This is because there is no way to know from the parent module what types are going to be used in feature modules.

When you disable multi-module, SomeClassNameInput doesn't get generated and therefore there's no compilation error.
As a workaround, until #2727 is fixed, you can set alwaysGenerateTypesMatching.set(emptyList()) in your gradle configuration and that should remove the class again.

Thanks for quick reply @martinbonnin
adding alwaysGenerateTypesMatching.set(emptyList()) is causing the following error:
A problem occurred evaluating project ':shared'.
> No signature of method: build_c1qwmpqlc6r6vqxxulke2kb7j.android() is applicable for argument types: (build_c1qwmpqlc6r6vqxxulke2kb7j$_run_closure1) values: [build_c1qwmpqlc6r6vqxxulke2kb7j$_run_closure1@1c3b9d20]

Any idea how to fix it?

Thanks for quick reply @martinbonnin
adding alwaysGenerateTypesMatching.set(emptyList()) is causing the following error:
A problem occurred evaluating project ':shared'.
> No signature of method: build_c1qwmpqlc6r6vqxxulke2kb7j.android() is applicable for argument types: (build_c1qwmpqlc6r6vqxxulke2kb7j$_run_closure1) values: [build_c1qwmpqlc6r6vqxxulke2kb7j$_run_closure1@1c3b9d20]

Any idea how to fix it?

Looks like you're using Groovy build.gradle files? alwaysGenerateTypesMatching.set(emptyList()) is for Kotlin Gradle build scripts. My Groovy is a bit rusty but something like below should do it:
alwaysGenerateTypesMatching = []

Looks like you're using Groovy build.gradle files? alwaysGenerateTypesMatching.set(emptyList()) is for Kotlin Gradle build scripts. My Groovy is a bit rusty but something like below should do it:
alwaysGenerateTypesMatching = []

Hi @nmaruashvili ! Did that work? Mind if I close this one and we keep #2727 for the default values bug?

Hi @nmaruashvili ! Did that work? Mind if I close this one and we keep #2727 for the default values bug?

Yes, you can close this one. alwaysGenerateTypesMatching = [] resolved my problem. Thank you again.

Yes, you can close this one. alwaysGenerateTypesMatching = [] resolved my problem. Thank you again.


Add cassandra-exporter to exporters.md

@brian-brazil For your review.
I removed the Cassandra reference for the jmx_exporter as I feel that cassandra-exporter does a far better job -- both in exposition performance and also quality of the metrics that are exported.

Yes. On a fresh, empty Cassandra node (only system tables) jmx_exporter generates 2909 metrics (excluding duplicates for columnfamiles vs tables, see below) whereas cassandra-exporter generates 7105 metrics.
jmx_exporter is unable to handle a number metrics that Cassandra exports.
Cassandra's EstimatedHistograms are made available over JMX as a long[], which are ignored by jmx_exporter. These are handled and exported as summaries by cassandra-exporter.
Dropwizzard timers and histograms are exported as summaries.
Additionally, Cassandra exposes a number of its metrics twice under different names (column family vs. table), and also exposes pre-aggregated values (per-keyspace/per-node). The default example jmx_exporter config for Cassandra doesn't exclude these, resulting in a number of duplicate and unnecessary metrics.
I think that cassandra-exporter should be included based on its performance and quality of output.
Cassandra-exporter bypasses JMX when run as an agent. On a Cassandra node that has 100's of tables, jmx_exporter takes seconds to export. Whereas cassandra-exporter does it in sub 100 milliseconds.

The output has been hand-tuned to try and closely follow the Prometheus best practices -- to have nice metric names and good labels, correct metric types, and where necessary the values are scaled to Prometheus base units (e.g., Cassandra exposes timings in microseconds and cassandra-exporter converts these values to seconds).

These are handled and exported as summaries by cassandra-exporter.

The percentiles are available via JMX, so the JMX exporter can support these. From a quick peek at your code, everything is coming from JMX - so there's nothing there that the JMX exporter can't do.
In addition it supports target labels as labels, and is not using the standard java client.
I'd suggest working on improving the example configuration for the jmx exporter.

The percentiles are available via JMX, so the JMX exporter can support these. From a quick peek at your code, everything is coming from JMX - so there's nothing there that the JMX exporter can't do.

cassandra-exporter uses some JMX metadata, since the exported MBean ObjectNames have more info than the Dropwizzard metrics that they wrap. But I assure you it does not use JMX MBean proxies or getAttribute() and instead directly calls the underlying getter functions, and in some cases accesses fields directly.
Do note that cassandra-exporter can run either as an agent or standalone. As standalone it is using JMX, but when running as an agent it bypasses JMX when querying the values..
Please again look at the performance difference between jmx_exporter and cassandra-exporter. Performance is a real concern. Instaclustr has dealt with Cassandra clusters that have 100's of tables and scraping JMX is too expensive. Burning seconds of CPU time is never a good thing, especially on a loaded server. We have seen metrics collection via JMX actually cause increased query latency.
Just because Cassandra offers the option to collect its metrics via JMX doesn't mean you should use JMX when there are better solutions available.

In addition it supports target labels as labels, and is not using the standard java client.

The cluster metadata/target labels can be disabled (see --no-global-labels).
Are you implying that cassandra-exporter is not eligible for inclusion into this list because it's not using the Prometheus Java client library?
The java client was determined to be too slow for the number of metrics a decently sized Cassandra node may have (again, see performance).

The standard set for replacing a use of the JMX exporter is that it has to offer some metrics which it would be impossible for to the JMX exporter to provide, even with additional development. It's also expected that you would engage with the maintainers of the existing exporter before trying to replace it, so that the community can work together.
What it sounds like you're doing here is putting something like the simpleclient_dropwizard in a Java agent, which has use beyond Cassandra. If there was such a thing using the normal client library I'd be happy to list it as Dropwizard is quite common and doing that is better than using JMX - however a completely independent exporter that's off the beaten path and only supports one application doesn't meet the bar for replacing the existing recommendation of the jmx exporter.

The cluster metadata/target labels can be disabled (see --no-global-labels).

An exporter shouldn't even offer this as a possibility, this is the responsibility of Prometheus. See https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels,-not-static-scraped-labels

Are you implying that cassandra-exporter is not eligible for inclusion into this list because it's not using the Prometheus Java client library?

No, but it is a bit unusual. Particularly as you're reinventing things like the standard JVM exports, and won't gain OpenMetrics support when that comes along (the latter may become a blocker in future).

The java client was determined to be too slow for the number of metrics a decently sized Cassandra node may have (again, see performance).

If you have suggestions to improve the java client let's discuss them in that repo, so they can benefit everyone.

What if I modify this PR so that it only adds Cassandra to the list of available database exporters, perhaps with a see also jmx_exporter note, but keeps the jmx_exporter + Cassandra recommendation at the top of the page?
The exporters page lists tightly-integrated exporters for numerous applications. In this case, cassandra-exporter is tightly integrated with Cassandra and as a result produces higher quality metrics with significant performance gains.

I aim to avoid duplicates in this list, both to encourage the community to work on one option and to make it easier for end-users to choose what to use. If you want to improve the example Cassandra configuration, a PR would be appreciated.

One size does not fit all.
jmx_exporter is not suitable for monitoring any reasonably-sized Cassandra node.
Burning seconds of CPU time to collect metrics is undesirable.
I note that a number of issues have been raised against the jmx_exporter project that talk about poor performance.
Perhaps you should allow cassandra-exporter on the list so that end-users have options and can decide which exporter to use based on their use-case.

Users are free to use exporters not on this list, so they already have options. Encouraging multiple divergent projects for each applications is not ultimately something that helps users though.

+1 to including this in the list. I don't see the big deal with having multiple possible exporters in the list. This is open source - it's not like the exporters are in direct competition, and any exporters creation and use is good for the project. Besides, precedent has already been set for having multiple exporters for a single technology. Kafka can use the jmx_exporter, but the list also mentions a third party exporter which was added in #876 because it spouted the same benefits as this cassandra-exporter. It also removed two existing third party Kafka exporters...

@zegelin would you be willing to create a Dropwizard exporter, ideally using our library?
That way, we can point at Dropwizard as the default method to get at that data
As to why using our library makes sense: We can better ensure a consistent ecosystem. We will be migrating our whole ecosystem to OpenMetrics at some point; by using our library you get that for free and your users will be able to switch back and forth, have autoneg (where possible), etc.

the list also mentions a third party exporter which was added in #876 because it spouted the same benefits as this cassandra-exporter.

The kafka exporter does something different to the jmx exporter, they're complementary.

@RichiH

@zegelin would you be willing to create a Dropwizard exporter, ideally using our library?

Dropwizzard does not have the concept of metric labels, only names, which results in an "impedance mismatch" with the Prometheus data model.
JMX ObjectNames offer richer metadata as they have attributes which can be translated into labels.
Cassandra uses a combination: It uses Dropwizzard as the underlying metrics library, i.e., all the counters, gauges, etc. are Dropwizzard implementations. Yet for JMX export, Cassandra has a custom MetricsRegistry sub-class implementation that allows alternate JMX ObjectNames to be specified for each registered Dropwizzard metric, which it uses to add metadata such as the keyspace and table name.
cassandra-exporter exploits this. The agent intercepts MBean registrations, which lets it save the ObjectName, and hence the Cassandra-specific metadata, associated with every Dropwizzard metric, and the raw Dropwizzard metric object itself. To collect the actual metric data, cassandra-exporer doesn't query MBean attributes. It directly calls the getter functions of the Dropwizzard metric objects.

As to why using our library makes sense: We can better ensure a consistent ecosystem. We will be migrating our whole ecosystem to OpenMetrics at some point; by using our library you get that for free and your users will be able to switch back and forth, have autoneg (where possible), etc.

And I intend to keep cassandra-exporter up-to-date with whatever changes to the ecosystem occur.
Re: OpenMetrics. Amusingly, I originally was targeting Protocol Buffers, but this was removed in Prometheus 2.0.
The trade-off of using custom exposition code resulted in significant performance improvements.

@brian-brazil

The kafka exporter does something different to the jmx exporter, they're complementary.

And cassandra-exporter does more than jmx_exporter.
It correctly handles the histograms exported by Cassandra as Dropwizzard Gauges with long[] values -- these are not handled  by jmx_exporter.
From the output of jmxterm, you can see that the only attribute (Value) is of type Object. It's actually a long[], which contains the raw sample data for Cassandra's custom EstimatedHistogram.
#mbean = org.apache.cassandra.metrics:type=Table,keyspace=keyspace1,scope=standard1,name=EstimatedPartitionSizeHistogram
#class name = org.apache.cassandra.metrics.CassandraMetricsRegistry$JmxGauge
# attributes
  %0   - Value (java.lang.Object, r)
# operations

For Dropwizzard Timers and Histograms, cassandra-exporter doesn't call getXXthPercentile for each percentile value, as those functions are slow -- they each take a lock, potentially rescale the bucket values, take a snapshot (which computes weights, etc) and then computes the percentile. Instead, there is a getSnapshot() function, not available via JMX which does all that work once, and actually allows for arbitrary percentiles to be queried. When you have hundreds of tables, each with a number of Timers and Histograms, the performance gains are substantial.
Certain metrics are not available via JMX attributes. Either they are exposed via JMX operations, or not at all. Examples of this:
cassandra_endpoint_downtime_total_seconds, which over JMX is an operation (GossiperMBean.getEndpointDowntime(String))
cassandra_effective_ownership_ratio, which over JMX is an operation (StorageServiceMBean.effectiveOwnership(String))
Others are attributes with a type that is incompatible with jmx_exporter:
cassandra_endpoint_active, which over JMX is available as a Map<InetAddress, String>
cassandra_ownership_ratio, which over JMX is available as a Map<InetAddress, Float>
cassandra-exporter attaches additional labels containing metadata not available via JMX.
For example, on table metrics, which represent CQL tables, views & indexes (internally, they're all tables), the labels are:

Label
..

keyspace
The parent keyspace (JMX keyspace)

table
The table name or the parent table, in the case of an index (JMX scope)

table_type
table, index or view

index
The name of the index, if the metric represents an index

index_type
keys, composite or custom

index_class
The implementing class of the index, for custom indexes

Cassandra also exports certain latency metrics as two individual MBeans -- a Latency bean and a TotalLatency bean. The exporter combines these together into a single Prometheus summary.

And lastly, and I obviously haven't stated this enough, it's significantly faster. How is this not a win for everyone who runs Cassandra + Prometheus?

I would appreciate an update to this ticket.

The kafka exporter does something different to the jmx exporter, they're complementary.

It appears that this Cassanrda exporter provides a 200x speed improvement. It surely must be doing something different than the standard jmx exporter :sunglasses:
I think it will benefit the Cassandra community if this project is appropriately advertised on the Prometheus page. It doesn't necessarly need to replace the existing one on the doc, we can put this one next to the standard one. I think we should give the Cassandra community the option to use a slow and resource intensive exporter, or this 200x times faster dedicated Cassandra exporter. That's the spirit of Open Source. :+1:


Change the mobile layout of Related Objects/Works section on entity pages

Problem Description:
The Related Objects/Works section on certain entity pages lacks a cohesive mobile design.
Expected Behavior/Solution:
Implement a mobile layout for Related Objects/Works
Requirements:

[x] The tab navigation menu will be condensed into a dropdown
[x] The tab content will be connected to the tab dropdown and be separated by a break line
[x] Change styling and placement of Show All button

Needed for promotion:
If an item on the list is not needed, it should be crossed off but not removed.

[x] Wireframe/Mockup - POW
[x] Committee discussions - Sarah
[x] Feasibility/Team discussion - Sarah
[x] ~Backend requirements - TBD~
[x] Frontend requirements - Kam
[x] Are new regression tests required for QA - Amy

No change in regression tests required

[x] ~Questions~

UAT/LUX Examples:

France
Othniel Charles Marsh, 1831-1899

Dependencies/Blocks:
N/A
Related Github Issues:

#269

Related links:
N/A
Wireframe/Mockup:

Place Example Figma file
Person Example Figma file

Testing done on my phone: https://lux-front-tst.collections.yale.edu/view/place/6271aae3-a32f-4aaa-883d-9c99a803a09c (France)

When you select "Show all results", it is not clear to the user what results are showing. On desktop this is not an issue as a user can view the advanced search query. But there should be something in mobile that reminds the user what this result was for as the search bar displays as blank.

** does not impact deployment, something I noticed.

Hot fix:
Hamburger should be in line with the "About Lux". Should be in line with the menu.
It should also be to the left of "lux yale collections discovery" rather than show below it.
@kamerynB


Minor analyze_tool fixes.

Don't analyze non-existent paths.
Log error on parsing failures.

TBR for trivial fixes.


Set readFile encoding to fix parsing YAML config file

Fixes #2643

This might need a test or updating the current test because it passes though it's not working !

Can you add one? I have no clue why it's failing.

It seems tests are failing

Superseded by #2968. Thanks for sending it anyway!


How to add documentation?

I would like to add documentation for backup/restore and virtual host / reverse proxy setup with Apache.
How would I do that?

That'd be great! We can't have enough documentation.
Here is a nice guide on how to create a pull request: https://www.digitalocean.com/community/tutorials/how-to-create-a-pull-request-on-github
Once you have cloned the repo, all you need to do is change (or add) the markdown files in /docs


Make sure RepositoryVersionValidatorsManagementController is following the How-To-Write-Controllers guide

Related issue: #609
Methods modified in RepositoryVersionValidatorsManagementController to follow the controllers guide.
The proper tests cases have been modified and new cases have been added.

@ptirador this seems to be working just fine. Good job! Could you please rebase? It appears that @carlspring's latest merge has renamed this class into ArtifactCoordinateValidatorsManagementController

@steve-todorov I just did the rebase. Could you take a look at the Jenkins build? I'm not sure what's going on.

@ptirador I've triggered a rebuild and it's passing in Jenkins now. However, it seems like you still have conflicts you need to resolve?

@steve-todorov Conflicts fixed.

@ptirador Great, thanks for your work!
@carlspring we can merge this now :)

@ptirador,
In the future, could you please rebase instead of merge? Reviewing the PR as it is will take forever like this. The diff is truly massive.

Other than my request, about using rebasing vs merging, things look great, thanks! :)


Skip Java integration tests on Linux only [ECR-1742]:

Overview
Disable Java tests requiring the native library on Linux until the loading bug is fixed (ECR-942).

See: https://jira.bf.local/browse/ECR-1742
Definition of Done

[x] There are no TODOs left in the code
[x] Change is covered by automated tests
[x] The coding guidelines are followed
[x] The continuous integration build passes

Our Mac users, would you test it locally please (@alexander-irbis, @MakarovS )?
I think it might require setting LD_LIBRARY_PATH environment variable to contain the path to the Rust standard library.

@bullet-tooth, @MakarovS , Travis running on Linux still skips the ITs, would you please test on a Mac locally that tests pass after various updates?

Merged, will test in master :trollface:

@dmitry-timofeev I just tested this branch - it worked


AB#167167: Improve on customer Log Analystics queries

Improve on customer Log Analystics queries to show comparison between Legacy TLS x TLS 1.2 usage.

Docs Build status updates of commit 2e6e72b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

support/azure/active-directory/enable-support-tls-environment.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

The proposed changes to the article will not be made, per offline conversation.
AB#167167

Docs Build status updates of commit 2e6e72b:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error: GitBranchDeletedOrForcePushed]

Cannot sync git repo to specified commit because ref +refs/pull/708/merge has been deleted or has been force pushed.
 If this is pull request, please ensure it is mergeable (no merge conflict) and open (not closed).

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


What is the /users/confirm/ endpoint?

In the docs there is an available endpoint /users/confirm/ but there is no explanation in the docs about this endpoint. What does this endpoint do? What is it used for?

There is no such url and the docs are just wrong. Thanks for finding that!

That's correct. Thank you!
https://github.com/sunscrapers/djoser/pull/806/commits/c2b1ffca771df44afe9a42a2efc7fd88b7eac7e9


Missing "singleDatePicker" option

Hello, as mentioned in title this plugin is missing "singleDatePicker" option to be able to select only one date instead of range

added in version v2.6.0.


bugs with expandCellWithHeightAt indexPath:

I think there's a bug in
func tableView(_ tableView: YNTableView, expandCellWithHeightAt indexPath: IndexPath) -> YNTableViewCell?
if i have only 2 records of cells [0,1], i expand both of them and tried to close cell 0's expanded cell,
i will get EXC_BAD_INSTRUCTION at line 172, 227 & line 279 in YNTableView.swift
if internalIndexPath == indexPath {
                self.didDeselectRowLogicAt(expandedIndexPath: expandedIndexPath, indexPath: indexPath)
                delegate.tableView(self, didDeselectRowAt: indexPath, isExpandableCell: true, isExpandedCell: false)
                return
            }

YNTableView.swift is trying to return indexPath.row 2, but my count record only have [0,1].
i tested with func tableView(_ tableView: YNTableView, expandCellAt indexPath: IndexPath) -> UITableViewCell? and it works fine. Not sure why though @younatics any comments?

How can you add more than one cells to the expandable cellis dynamically?

@dontgeorgek I didn't said the expandable cell will expand more than one cell. I said when both cell 0 n 1 expand its expandable cell, closing cell 0's expandable cell will cause the error.
This error won't happen on the default expandCellAt func.

I started new project for more expandable, concise library. Please wait for a weak

Thats great news.
On Mon, 7 Aug 2017 at 7:23 AM, Seungyoun Yi<EMAIL_ADDRESS>wrote:

I started new project for more expandable, concise library. Please wait
for a weak
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/younatics/YNExpandableCell/issues/16#issuecomment-320549883,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABzGhq3a-OZT2XQ-n616CchMdTyna6eBks5sVm4CgaJpZM4Oss4K
.

--
Thanks & Regards,
Dony George
Mob: +919495647997
Skype: donygeorgek

@younatics thanks mate! looking forward

It will be release today. I will tell you again

Hello. Thank you for your great patience. I made ExpandableCell fully refactored YNExpandableCell.
Thanks!


Pagination buttons not working first time only 2nd time click

Describe the bug
Apologies if this has been posted but i can't find this issue :(
API returns list of items and also pages . pages will show in frontend how many page buttons it will have.
Problem when i receive data i can't use Pagination component properly, when i first time click it nothing happens i mean the number does not change in the Pagination component but API request is being made. But if click 2nd time then it works and you see animation moving from one number to another.
import { useState } from 'react'
import { NextUIProvider, Pagination } from '@nextui-org/react'
import { QueryClient, QueryClientProvider, useQuery } from '@tanstack/react-query'
import { createFileRoute } from '@tanstack/react-router'

export const queryClient = new QueryClient()

export const Route = createFileRoute('/test8/tsq')({
	component: () => (
		<QueryClientProvider client={queryClient}>
			<NextUIProvider>
				<Tsq />
			</NextUIProvider>
		</QueryClientProvider>
	),
})

const fetchData = async (page: number) => {
	const r = await fetch(`https://jsonplaceholder.typicode.com/posts?_page=${page}&_limit=2`)
	if (!r.ok) throw new Error('Network response was not ok')
	return { pages: 4, items: await r.json() }
}

const Tsq = () => {
	const [page, setPage] = useState(1)
	const { data } = useQuery({ queryKey: ['posts', page], queryFn: () => fetchData(page) })
	console.log('🚀 ~ data:', data?.pages)

	return (

TSQ page

			{data?.pages && <Pagination total={data.pages} initialPage={1} onChange={setPage} />}

{JSON.stringify(data, null, 2)}

	)
}

Also made video https://github.com/user-attachments/assets/cd1a04f8-bfe5-46ea-8572-12fccf412bf4
Your minimal, reproducible example
https://github.com/MariuzM/web-frameworks/blob/main/react-tsr/src/routes/test8/tsq.tsx
Steps to reproduce

Click any number, first time click it wont select that number, but second time clicking it will

Expected behavior
When clicking first time the number should change of the Pagination component.
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
macOS
Tanstack Query adapter
react-query
TanStack Query version
5.59.13
TypeScript version
5
Additional context
No response

yes, it’s documented here: https://tanstack.com/query/latest/docs/framework/vue/guides/paginated-queries#better-paginated-queries-with-placeholderdata


Resolves #965 handling of ALREADY_FAILED_BY_KNOWN_BUG SkipExceptions

965 description:
That will remove redundant test results in final testNG report.
Logic should work similarly with ALREADY_PASSED skipped tests processing.
Related to zafira-client PR: qaprosoft/zafira-client#20

@SergeiZagriychuk, why there is no changes in zafira-client? I'm ok to put here snapshot version to test preliminary and replace by officially released version

ok, I'll add zafira-snapshot in pom.xml

in parallel zafira issue was found https://solvd.atlassian.net/browse/ZEB-1130 while was testing the feature


perfdash: add pod-affinity, pod-topology-spread workloads

What type of PR is this?
/kind feature
What this PR does / why we need it: Adds pod-affinity and pod-topology-spread workloads (added in https://github.com/kubernetes/perf-tests/pull/1464) to perf-dash.
Which issue(s) this PR fixes:

Fixes https://github.com/kubernetes/perf-tests/issues/1414
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

/sig scheduling
/cc @mm4tt @ahg-g

Please see https://gcsweb.k8s.io/gcs/kubernetes-jenkins/logs/ci-kubernetes-kubemark-100-gce-scheduler/1306285545906769922/artifacts/ for an example run with the pod-affinity and pod-topology-spread artifacts.

/ok-to-test

/approve
/hold
Please work with current oncall @mborsz to deploy the new version of perf-dash

/lgtm

/cancel hold
as per @mborsz - once merged, please go ahead with the deploy, thanks!

/hold cancel

@mborsz was 2.27 recently deployed?


change UG and debug batchdelete

Modify batchdelete command in UG
Closes https://github.com/AY2324S1-CS2103T-W16-3/tp/issues/181
missing /dm in example
Modify add command in UG
Closes https://github.com/AY2324S1-CS2103T-W16-3/tp/issues/163
indicate that tag is optional and allow multiple tags
Edit the acceptable values:
name - alphanumeric (issue 190)
policy number - up to 8 character (issue 165)
Improve batchdelete
Closes https://github.com/AY2324S1-CS2103T-W16-3/tp/issues/195
batchdelete won't remove customer with no policy since batchdelete is designed for user to delete client whose policy fulfil the given condition.

close this pull request due to incorrect commit message subject line


case statement that causes elm-make 0.16 to hang or crash

The following code causes elm-make 0.16 to hang on my OS X 10.10.5 machine, using all the CPU. It also causes my clone of elm-lang.org to crash the snap server when I try to compile the code in the equivalent of the elm-lang.or/try page. I found the code in this posting: https://elmlang.slack.com/archives/general/p1450513501003246
@evancz This might be the kind of code that can bring down the snap server on elm-lang.org.
step2a' : List Char -> List Char
step2a' drow =
  case drow of
    'l' :: 'a' :: 'n' :: 'o' :: 'i' :: 't' :: 'a' :: mets ->
      []
    'l' :: 'a' :: 'n' :: 'o' :: 'i' :: 't' :: mets ->
      []
    'i' :: 'c' :: 'n' :: 'e' :: mets ->
      []
    'i' :: 'c' :: 'n' :: 'a' :: mets ->
      []
    'r' :: 'e' :: 'z' :: 'i' :: mets ->
      []
    'i' :: 'l' :: 'b' :: mets ->
      []
    'i' :: 'l' :: 'l' :: 'a' :: mets ->
      []
    'i' :: 'l' :: 't' :: 'n' :: 'e' :: mets ->
      []
    'i' :: 'l' :: 'e' :: mets ->
      []
    'i' :: 'l' :: 's' :: 'u' :: 'o' :: mets ->
      []
    -- 'n' :: 'o' :: 'i' :: 't' :: 'a' :: 'z' :: 'i' :: mets ->
    --   ifMeasure 0 drow mets ['e', 'z', 'i']
    'a' :: 'b' :: mets ->
      []
    'a' :: 'b' :: mets ->
      []
    'a' :: 'b' :: mets ->
      []
    'a' :: 'b' :: mets ->
      []
    'a' :: 'b' :: mets ->
      []
    _ ->
      drow

This is because of the pattern match compiler that came with 0.16. It is trying to be more sophisticated such that it does not run checks multiple times. It seems to have pretty bad worst case performance though, so I believe this will terminate eventually. So this is an elm-compiler thing.


ApplicationCertificate in client option

This is not really an issue but I dont know where to ask help.
I am new to OPC and I would like to have some help on how to set up the application certificate to connect to a server.
Thanks to all.
Frank !

HI @gfbaggio
I know its a super late reply, but I assume this still may help someone. If when connecting you are seeing the exception that certificate is required. The solution below assumes you have a X509 certificate present as a file, if not, you can easily create one and then add that certificate as a trusted client certificate in your opc server(for Kepware this is done by: right clicking the kep ServerEx tray, Open OPC UA Configuration manager and then add then import the certificate file to the trusted clients tab)
Add the following code before you call the .connect method
         var options = new UaClientOptions {};

        // The path to the certificate.
        string Certificate = @"C:\ProgramData\OPC Foundation\CertificateStores\MachineDefault\certs\cert.der";

        // Load the certificate into an X509Certificate object.
        X509Certificate2 cert = new X509Certificate2();

        cert.Import(Certificate);
        options.ApplicationCertificate = cert;


AllContributors setup

Recently got my first contribution from external sources, is only fair to recognise the hard work of everybody
AC:

Modify README with contributors following AllContributions guidelines
Setup AllContributions bot

@all-contributors please add @wovalle for code

@allcontributor please add @wovalle for code

@allcontributors please add @wovalle for code

@all-contributors please add @mamodom for ideas

@all-contributors please add @jonesnc for code

@all-contributors please add @jonesnc for code
Btw sorry for the spam, the bot is not working as smooth as I expected

Ready!


Can we detect blurry image while capturing images?

Question
Can we detect blurry images while capturing picturing ?
What I tried
No response
VisionCamera Version
3.8.2
Additional information

[ ] I am using Expo
[X] I have read the Troubleshooting Guide
[X] I agree to follow this project's Code of Conduct
[X] I searched for similar questions in the issues page as well as in the discussions page and found none.

You can use a Frame Processor Plugin to do that. This requires custom magic though.
I don't have an event for exposing auto-focus state at the moment if that's what you're asking, no.


Drop invalid Managed field from NetworksPost

This should never have been there in the first place.

Indeed, fixed now.

Testsuite passed


SetSheetCol feature

How about adding a new method "SetSheetCol"
I do see "func (f *File) SetSheetRow(sheet, axis string, slice interface{}) error {}" in the latest release but I can't find the similar method for Col.
Shall we add a method for setting up sheet col values? It could be really similar as "SetSheetRow"
func (f *File) SetSheetCol(sheet, axis string, slice interface{}) error {
	col, row, err := CellNameToCoordinates(axis)
	if err != nil {
		return err
	}

	// Make sure 'slice' is a Ptr to Slice
	v := reflect.ValueOf(slice)
	if v.Kind() != reflect.Ptr || v.Elem().Kind() != reflect.Slice {
		return errors.New("pointer to slice expected")
	}
	v = v.Elem()

	for i := 0; i < v.Len(); i++ {
		cell, err := CoordinatesToCellName(col, row+i)
		// Error should never happens here. But keep checking to early detect regresions
		// if it will be introduced in future.
		if err != nil {
			return err
		}
		if err := f.SetCellValue(sheet, cell, v.Index(i).Interface()); err != nil {
			return err
		}
	}
	return err
}

Thanks for your issue. To add this feature, we need to create the common function to check cell reference and value reflection for SetSheetCol and SetSheetRow, which can be made code simple and clean.

Thank you xuri


Match uppercase/lowercase for non ASCII character

Composite characters are typically treated in different ways in reqlite and RethinkDB

Fixed in 427259551a7766e8235f1aea4057d751b78361b0


Update formating

I just reformat the code

Sorry for the long wait. Thank you very much for your contribution! I merge this now here and release as soon as possible!