Host musl-toolchain

As discussed in previous meetings, we have scripted the creation of a cc_toolchain which uses musl to produce statically-linked binaries, and which can be built cross-platform (e.g. Linux binaries can be built from macOS).
From the criteria:

Must use an open-source license, preferably Apache-2.0.

Happy to Apache-2.0.

Must have wide applicability in the community.

Yes - this applies to anyone who wants a C++ toolchain with Bazel, similar to https://github.com/aspect-build/gcc-toolchain.

Must have a clear point of contact who answers questions from the SIG.

Yes - @illicitonion

Must be “production quality”:

Yes - my company has been using this and releasing binaries to production based on it for several years. There's no reason this wouldn't reasonably apply to any other user too.

Clear README or other documentation outlining the goal of these rules, how to use them etc.

generated API documentation
include examples of use
tests that are running continuously

Yes - We have CI that verifies binaries built on each of {linux x86-64, macOS x86-64, macOS arm64} successfully run on a linux x86-64 worker, and a README explaining how to use. We don't have API documentation similar to https://github.com/aspect-build/gcc-toolchain the API is just: register the toolchain.

Must reply to issues/PRs in 2-3 weeks (exact service level agreement TBD)

Yes.

Must have more than one person who is committed to review/approve PRs

@illicitonion and @gibfahn have signed up as initial maintainers, my company can provide more if needed.

Must publish semver releases.

Sure.

Must work with LTS Bazel version

CI currently tests 6.3.2. Happy to target future LTSes as they're released.

Initial code-drop: https://github.com/bazel-contrib/musl-toolchain/pull/1

Screenshot of what the generated GitHub actions end up like:

Screenshot of what a generated release looks like:

Something worth calling out: The ARM macOS build requires billing to be enabled for the org, and the "build musl" actions are sloooow, so the other platforms will reasonably quickly churn through the free actions quota.

Approved at the Bazel Rules SIG meeting on 2023-10-31 without the arm MacOS CI runners.

@illicitonion When the CI MacOS arm stuff is disabled, let us know and we can get someone to approve the PR.

I just pushed https://github.com/bazel-contrib/musl-toolchain/pull/1/commits/af7cfa292cb4392861f3a60218d30ebfbd26dfd4 removing the macOS ARM support :) Thanks @cgrindel!

Is there more to do on this issue, or can it be closed?


Asset Ingestor - fix target path if preserveFileName is unchecked

If preserveFileName option is unchecked, target path is cut off and Asset Ingestor doesn't work properly.
This is a fix of path validate method.

Pull Request Test Coverage Report for Build 3570

8 of 8 (100.0%)  changed or added relevant lines in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage increased (+0.005%) to 43.819%

Files with Coverage Reduction
New Missed Lines
%

bundle/src/main/java/com/adobe/acs/commons/mcp/impl/ProcessErrorReportExcelServlet.java
1
66.22%

Totals

Change from base Build 3563:
0.005%

Covered Lines:
10078

Relevant Lines:
22999

💛  - Coveralls

hi @badvision
please review the fix

@cylinder-y Do these changes work for what you intended also?

Hello @badvision,
This pull request is a fix of minor issue that wasn't covered in #1627. So we need this changes
--Yaraslau


[Critical] fix(services): remove calls to getJsDocTagsOfSignature

getJsDocTagsOfSignature was removed in an upstream TypeScript PR a couple days ago, which is in this repo right now. This PR removes calls to this non-existent function and allows the project to build again.

Lovely, I messed up rebasing and also realise it would be easier to keep the main with just one commit on top of the TS head so I've cherry picked the changes!


dem_mosaic --save-index-map nodata

The default nodata value for the output integer index map tif is set to 0.  The DEMs list uses a 0-based index.  So the first DEM in the list is indistinguishable from nodata during subsequent analysis.
Either need to change default nodata value, or increment DEM indices (both when writing pixels and writing the txt list).  I think the latter would be a better solution.

David, I took a look. I verified that the default output nodata value for the index map tif is actually what the user sets it to be, and by default, is copied from the first DEM. Can you check what that value is for that first DEM, or what you are setting --output-nodata-value to? I have a testcase, where in first-index-map.tif I see NoData Value=-3.4028234663852886e+38 and I just used the defaults. If there is still a problem, I'll look again.

Ah, yes.  I'm feeding time-sorted DEMs to dem_mosaic and generating first and last mosaics.  Some of the early DEMs were generated with workflow that used ndv of 0, while later DEMs use -9999.  I was not specifying output ndv, so dem_mosaic was using that 0 value for some outputs.
Seems like for integer index maps, we should force output ndv to be 0, and start the DEM indices at 1, regardless of what the user specifies.  Seems unnecessary to have float32 values for this output data type, just to accommodate a user-defined ndv.  But, I realize this is not widely used functionality, so I can live with manually set output ndv to something that won't conflict with DEM indices.


change websocket library

We need to use socket.io library for WebSocket sommunication to the backend to run the backend behind a apache revers proxy

imho it is easier to use sockjs for reverse proxy support of real-time-communication, as sockjs is supported by spring (boot) out of the box.
please test web socket communications.

websocket is working


 We have to remove the builder and generate arguments separately.

Done in #658.


BugFix - login page render when default values from tabler.yaml

Description
Remove OLD AdminLTE comparison that breaks the render when default values
used from tabler.yaml to disable "register link" for example.
FIX :

Registration ✔
Reset password ✔

Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[ ] I updated the documentation (see here)
[x] I agree that this code will be published under the MIT license

I take advantage of this PR to remove other OLD AdminLTE refs. (non breaking)

And I'll leave it open for a bit, just in case you find more places

LGTM, you can merge this PR 👍


I don't see any logs?

How about some screen shots?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ecc5e84d-603c-6f88-a941-df33aad0e1d8
Version Independent ID: ae6976bb-aadd-4d40-bb62-57589265f4ff
Content: Monitor published APIs in Azure API Management
Content Source: articles/api-management/api-management-howto-use-azure-monitor.md
Service: api-management
GitHub Login: @vladvino
Microsoft Alias: apimpm

@eschneider999 Thank you for the feedback!  We are looking through the documentation and will get back to you shortly.

@vladvino I do agree that the document would benefit from some screenshots of step navigation and especially examples of expected results.


Destructor Not Being Called

I tried to use Destructor in a simple class and I found It's not calling class Destructor when object goes outside the scope but I tried the same approach with IDisposable and it worked fine if you need the code example let me know but it was kinda weird

Assalomu Alaykum! Can you send me your code?

The deconstructor may not be called immediately, it may relate to GC processing


Vegeta causes panic at high rates

Run the following:
ali -r 1000 http://host.xz

Then panic occurred.
The noteworthy stack traces are:

tsenart/vegeta/v12/lib/attack.go:340
tsenart/vegeta/v12/lib/attack.go:312

It happened to me, too
How to solve that problem

@jackey925 Hey, this is resolved by https://github.com/nakabonne/ali/pull/60. And you can gain the revised version from v0.4.0!


Bash script for install

Hi there, great project, thanks for working on it.
Would you mind me writing a PR for an automated installation bash script? My .sh skills are not the best but I can work my way through it, and I think this would be massively helpful. Also, some of the documentation in the readme is not as clear as it could be for first-time users (for example, the need to chmod +x the restic_backup.sh files) and I would be glad to work a bit on this as well.
I just want to make sure I don't waste any efforts and that the maintainers would be OK with me doing this (and merging if the code/documentation is good quality).
Thanks!

Hey there!
Did you check out the Makefile? It will install and set correct permissions :)

I see what you mean! That sounds good
Yes I would merge such a PR :)

After some more thinking, I believe that the maintenance burden of having an additional way of installing becomes too hard. As currently here is the Makefile and the manual instructions in the README. Adding a 3rd method will make it quite burdensome to maintain this project.
I'm happy to be prove wrong though, maybe it's not such a big deal :)


TypeError: UUID objects are immutable" when try view, delete, update user from fastapi-users in sqladmin panel

Checklist

[X] The bug is reproducible against the latest release or master.
[X] There are no similar issues or pull requests to fix it yet.

Describe the bug
Hi! I faced with a problem
I want to view, edit or delete an instance of the User model in the admin panel, but I got that error: TypeError: UUID objects are immutable
Steps to reproduce the bug
models.py
class User(SQLAlchemyBaseUserTableUUID, Base):
    is_active: Mapped[bool] = mapped_column(nullable=True, default=False)
    tariff: Mapped[str] = mapped_column(String, ForeignKey('tariff.slug', name='fk_user_tariff'), nullable=True)

    advert_tokens: Mapped[list[AdvertToken]] = relationship(
        secondary='m2m_advert_token_for_user', back_populates='users', lazy='selectin'
    )

    user_permissions: Mapped[list['Permissions']] = relationship(
        secondary='m2m_user_permissions', back_populates='users', lazy='selectin'
    )

    auto_adverts: Mapped[list[AutoAdvert]] = relationship(lazy='selectin')
    external_resources: Mapped[list['SyncLink']] = relationship(back_populates='user', cascade='all, delete')

admin_models.py
class UserAdmin(ModelView, model=User):

    model = User

    pk_columns = [
        model.id
    ]

    column_list = [
        User.email,
        User.id,
        User.tariff,
        User.is_active,
        User.is_superuser,
        User.is_verified
    ]
    can_create = True
    can_edit = True
    can_delete = True
    # can_view_details = False
    #
    # name = 'User'
    # name_plural = 'Users'

    category = 'User'

Try to view, delete or edit an instance of User model in the admin panel
Expected behavior
You can do smth with User model
Actual behavior
TypeError: UUID objects are immutable
Debugging material
Traceback (most recent call last):
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 435, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/fastapi/applications.py", line 292, in __call__
    await super().__call__(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 109, in __call__
    await response(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/responses.py", line 270, in __call__
    async with anyio.create_task_group() as task_group:
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 597, in __aexit__
    raise exceptions[0]
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/responses.py", line 273, in wrap
    await func()
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 134, in stream_response
    return await super().stream_response(send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/responses.py", line 262, in stream_response
    async for chunk in self.body_iterator:
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 98, in body_stream
    raise app_exc
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/base.py", line 70, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/prometheus_fastapi_instrumentator/middleware.py", line 169, in __call__
    raise exc
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/prometheus_fastapi_instrumentator/middleware.py", line 167, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/cors.py", line 91, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/cors.py", line 146, in simple_response
    await self.app(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
    raise e
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
    await self.app(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/routing.py", line 443, in handle
    await self.app(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/sessions.py", line 86, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
               ^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/sqladmin/authentication.py", line 66, in wrapper_decorator
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/sqladmin/application.py", line 482, in delete
    model = await model_view.get_object_for_delete(pk)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/sqladmin/models.py", line 839, in get_object_for_delete
    stmt = self._stmt_by_identifier(value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/sqladmin/models.py", line 845, in _stmt_by_identifier
    values = object_identifier_values(identifier, self.model)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tailo/Library/Caches/pypoetry/virtualenvs/app-rGgr4MIE-py3.11/lib/python3.11/site-packages/sqladmin/helpers.py", line 234, in object_identifier_values
    values.append(get_column_python_type(pk)(part))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/typing.py", line 1263, in __call__
    result.__orig_class__ = self
    ^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/uuid.py", line 278, in __setattr__
    raise TypeError('UUID objects are immutable')
TypeError: UUID objects are immutable

Environment
macOS sonoma 14.0 / python 3.11 / sqladmin 0.15.2
Additional context
No response

Hi @aminalaee, can you help with that issue?

Hey @greatlaki ,
I haven't had a chance to check this, but can you share what is the PrimaryKey of the model in FastApi-Users?
I'm guessing it's a UUID plus something else.

Hey @greatlaki , I haven't had a chance to check this, but can you share what is the PrimaryKey of the model in FastApi-Users? I'm guessing it's a UUID plus something else.

Yes, sure
here is it
import uuid
from typing import TYPE_CHECKING, Any, Dict, Generic, Optional, Type

from fastapi_users_db_sqlalchemy.generics import GUID (a part of the class of that is below)

UUID_ID = uuid.UUID

class GUID(TypeDecorator):  # pragma: no cover
    """
    Platform-independent GUID type.

    Uses PostgreSQL's UUID type, otherwise uses
    CHAR(36), storing as regular strings.
    """
    ...

class SQLAlchemyBaseUserTableUUID(SQLAlchemyBaseUserTable[UUID_ID]):
    if TYPE_CHECKING:  # pragma: no cover
        id: UUID_ID
    else:
        id: Mapped[UUID_ID] = mapped_column(GUID, primary_key=True, default=uuid.uuid4)

Hello, folks. Thanks for the information you shared here. I have the same issue, and with the help of your comments, I could put in place a workaround:
import uuid

from fastapi_users.db import SQLAlchemyBaseUserTableUUID
from sqlalchemy import Column
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped

from .session import Base

class User(SQLAlchemyBaseUserTableUUID, Base):
    id: Mapped[uuid.UUID] = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)

I tested it with PostgreSQL as it supports UUIDs natively.

Or I think with more recent SQLAchemy versions you could try Uuid as opposed to UUID from postgresql dialects and that provides the native type in PostgreSQL and char type in other databases.

@vbmendes but you are overwriting the basemodel. Not sure if this is the way to go.
@aminalaee is there any way to natively support SQLAlchemyBaseUserTableUUIDs predefined id?

I saw that this is already fixed in CPython and merged in Python 3.11 and 3.12: https://github.com/python/cpython/pull/115213


v-repeat with v-component and paramAttributes

http://jsfiddle.net/rynrj5Ls/
When using v-component in a v-repeat, I'm able to compile a statement using the properties of each item in the v-repeat directive:
data: {
  items: [ { view: 'someComponent', value: 'someValue' } ]
}

However, I cannot use paramAttributes or v-with values from the items within the v-repeat for compiling the component, like this:

Is this intended?

I've worked around this by wrapping the component in a v-repeat to separate the contexts:
<template v-repeat="item: items">

</template>

I should note that my specific use-case is using a property name defined in each item to access a property on its parent data.

Yeah, the dynamic v-component being able to access the repeated context is a special convenience (although possibly a confusing one); when using a component, other directives on the repeat container will be compiled in parent scope. Using a wrapper in this case is the recommended solution.

Thanks for the clarification @yyx990803.


[Moderate] Insecure randomness algorithm usage

[Moderate] Insecure randomness algorithm usage
Summary
The source of randomness configured in the runtime for the society pallet is set to pallet_insecure_randomness_collective_flip, which is implemented in Substrate.
The output of collective flip is highly predictable as it is based on the last 81 blocks and should not be used as a true source of randomness.
Issue details
The RandomnessCollectiveFlip definition for Hashed's parachain runtime is set to pallet_insecure_randomness_collective_flip:
// Create the runtime by composing the FRAME pallets that were previously configured.
construct_runtime!(
	pub enum Runtime
	{
			...
		RandomnessCollectiveFlip: pallet_insecure_randomness_collective_flip::{Pallet, Storage}  = 82,
		Society: pallet_society::{Pallet, Call, Storage, Event<T>}  = 83,
			...
	}
};

The runtime config for pallet-society makes use of the RandomnessCollectiveFlip pallet defined in the above construct_runtime!:
impl pallet_society::Config for Runtime {
	type RuntimeEvent = RuntimeEvent;
	type PalletId = SocietyPalletId;
	type Currency = Balances;
	type Randomness = RandomnessCollectiveFlip;

Risk
A malicious collator could influence the randomness, which is being used by the society pallet.
Mitigation
Use a secure randomness, either with the usage of an oracle of a project like drand or a secure library.
You can also consider using the BABE pallet, as described in the Substrate documentation. Check out Kusama's runtime configuration for an example.

This is low priority, as at the moment we are not using the society pallet, and there is not a straight forward solution.


Come on dude, Do you know anybody in the scene then?

You have at least six repository about it, and they are pinned which means you're not that bad.
I really need help
NoNaMeG0d#4656

I meant that I am not good at teaching.  Please stop abusing the issue tracker.


Preventing creation of empty encode group =??Q??=

Found a wrong behaviour of non-ASCII header value encoding. It was creating empty encode group "=?UTF-8?Q??=" for "äääääääääääääää ä" in message subject. And some mail clients could not decode such "subject" properly.
Added minimal fix and few extra tests.

Sorry for disturbing again, but is there any ETA for review? This bug is really annoying if you are sending emails with non-ASCII subject because the first word in such subject can not be longer than 10 symbols. For example you can not send email with a simple subject like "подтверждение регистрации" (registration confirmation).

Thanks, @Articus!


refactor: optimization type

Motivation and Resolution

Improve maintainability

RPC version (if applicable)
N/A
Usage related changes
N/A
Development related changes
N/A
Checklist:

[x] Performed a self-review of the code
[x] Rebased to the last commit of the target branch (or merged it into my branch)
[ ] Linked the issues which this PR resolves
[ ] Documented the changes in code (API docs will be generated automatically)
[ ] Updated the tests
[x] All tests are passing

@ylmin Did you encounter a situation where this change would be helpful?


Manage rpc timeout execption

After a certain time period of no request and response. How to re-establish connection to the database

Did you figure this out?
I believe I am having a similar issue. My app works great when opened, but after being left on overnight and trying to use it the next morning I get "IAM permission error: not enough permission to do this" on a query that works normally.
If I close and start the app, the same query works perfectly fine.
I create the client:
var dclient = SurrealDB(dotenv.env['DATABASE_URL']!)..connect();
  await dclient.wait();
  await dclient.use('test', 'test');
  final token = await dclient.signin(user: username, pass: password, namespace: "test", database: "test");

When it fails I try to "re-connect" with:
      // try to reconnect
    dclient.close();
    dclient.connect();
    await dclient.wait();
    await dclient.use('test', 'test');
    await dclient.authenticate(token);

But that does not seem to work. It continues to fail with a permission error until I stop the app and start it again.


creating materials from BSPs compiled without WAD files

when compiling a "generic" map in trenchbroom (one not associated with a game) texturing isn't done with WAD files but instead with misc texture types stored in the "textures" folder with the trenchbroom executable. this means that there isn't any WAD data baked into the BSP after compilation, so the importer logs the "missing texture [#] make sure wad file is compiled into map" error.
is there (or can there be) a way to still generate materials and appropriate UVs from BSPs compiled this way?

This is possible with the latest version.  You can specify a texture path in the import settings and it will use the dimensions and create materials from those.

oh is that the Texture Path Pattern param or the Texture Path Remap param?

Texture path pattern will let you specify a path where the textures reside, replacing the {texture_name} with the texture name in the bsp file.  Texture path remap allows you to specify a dictionary that maps specific texture names to a path (in case you have some special case textures where the filename doesn't match the texture or something like that).


Incompatibility with Qiskit 1.0

The failures of this plugin in the test matrix are ultimately because of Qiskit 1.0.
Currently, this plugin is relying on pennylane-qiskit, which does not pin to Qiskit <1.0 as a dependency. We do this because part of the plugin is compatible with 1.0 and the other part is not (which is taken care of in the CI). Our plan is for all of pennylane-qiskit to work with 1.0, but this will likely not happen until the end of March.
In the meantime, it might make sense for this plugin to pin to <1.0 Qiskit in setup.py.

Thanks, for reporting this. we indeed updated quantuminspire SDK to remain compatible with Qiskits latest updates. We will see if we can add the pin to let it work again (at least the latest version).

Monday May 27th: all tests in the matrix passed successfully. Last week we saw some fails we cannot solve in the plugin.
Sometimes a test fails because the answer is slightly out of the range of the accepted values. Sometimes the Quantum Inspire backend was not responding (or unreachable).


Unable to re-use DRCA after close()

Hello,
Currently, calling close() on DockerRegistryClientAsync instance renders that instance unable to initiate another aiohttp session. After calling close() the underlying session is closed but the variable reference for it is not set to None and subsequent calls to, eg., get_manifest fail with "Session is closed" error.

Hm... the problem is even more convoluted: Setting self.client_session to None is not enough. The TCPConnector is created once per _get_client_session invocation and saved into self.client_session_kwargs. However, when close() is called the connector is closed as well, but the closed instance is re-used once  new instance of client_session is created, which is clearly a bug. Unfortunately, I don't see a good way out of this, except to disallowing self.client_session_kwargs entirely... :/

DRCA wasn't really intended to be re-entrant; the close method was exposed to allow for handling of edge-cases where asynchronous context managers were insufficient. The connector_owner flag could potentially be passed to the underlying lying TCP connection via tcp_connector_kwargs if the intention is to reuse the cached object for the next "iteration"; but this might make for an odd referencing of the buried object if / when explicit closing is needed (assuming that it is prior to the end of the process).
Either way, I agree that not assigning None to the object during close actively impedes the potential to do this.

Hey crashvb,
Thanks for the prompt reaction. However, I don't think this is the correct fix. The problem has nothing to do with re-entrancy of the code. I'll try to illustrate the problem with an example, which I think is very common use-case.
import docker_registry_client_async as drca

class DomainLogic:
  def __init__(self):
    self._client = drca.DockerRegistryClientAsync()

  async def get_layers(self, image_name):
    async with self._client as session:
      manifest_resp = await session.get_manifest(image_name)
      # process manifest
      ...

      layers_resp = await session.get_blob(...)
      # process blobs
      layers = ...

      return layers

logic = DomainLogic()
for image in (image_name1, image_2):
  await logic.get_layers()

On the second round in the loop, the program will crash with "Session is closed" error on get_manifest() call because the connector instance will be re-used and it's already closed.
Even more streamlined example:
import docker_registry_client_async as drca

client = drca.DockerRegistryClientAsync()
async with client as session:
  session.get_manifest(...)
async with cleint as session:
  session.get_manifest(...)  # Session is closed

I think that closing the drca intsance (using explicit close() or aexit) should not force the user to know the internals of the library and himself re-create the connector class, this is in implementation detail of the lib. The lib should re-cycle the connector class on every new creation of a session in my opinion.


[docker] add docker environment as development environment

Codecov Report

Merging #271 (a43bb14) into main (8b7655f) will decrease coverage by 0.08%.
The diff coverage is n/a.

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

@@            Coverage Diff             @@
##             main     #271      +/-   ##
==========================================
- Coverage   49.93%   49.84%   -0.09%
==========================================
  Files          38       38
  Lines        4604     4604
==========================================
- Hits         2299     2295       -4
- Misses       2123     2126       +3
- Partials      182      183       +1

Impacted Files
Coverage Δ

web/web.go
47.61% <0.00%> (-3.18%)
:arrow_down:

dispatcher/dispatcher.go
56.81% <0.00%> (-0.29%)
:arrow_down:

replaced by https://github.com/openthread/ot-ns/pull/324


feat: Adds Debug, Clone auto-derive to SqliteArguments

MySqlArguments implements Debug + Default but SqliteArguments only implements Default.
I wonder if I should add Clone especially for backward compatibility in the future. I'm willing to remove Clone if I should.

Clone is fine. All the arguments type will be Clone-able once we move to deferred encoding.

Clone is fine. All the arguments type will be Clone-able once we move to deferred encoding.


images are not shown in pdf file

i'm using firebase for hosting my images and when i set an image in html it doesn't show , can you help me please , there must be a probem showing images

I have been passed with the same problem so I converted my image into base64 and it worked for me.
You can work this one

can u show me how to turn images url to base 64

import RNFS from 'react-native-fs'; componentWillMount() {         RNFS.readFile('/data/user/0/com.sensitivesweets/files/42ea1ec932d5c8cd74423d7361ceb412.png', "base64")             .then(res => this.setState({ imageData: res }))  //res will contain base64 with data:/image/*:base64;..     }

how to add an image from assets folder?
import img from './assets/img/myimage.png';
how can add this img to pdf?

how to add an image from assets folder?
import img from './assets/img/myimage.png';
how can add this img to pdf?

Apparently, you cannot do this. What you can do is to put the images in the android (I don't know how to do this for iOS) folder of your react native project. There is a folder called assets at your_rn_project/android/app/src/main where you can put your media files.
To render an image in your PDF file, you are going to use something like this: src="file:///android_asset/images/your_media_file.png". Note that android_asset points to your your_project/android/app/src/main/assets.

how to add an image from assets folder?
import img from './assets/img/myimage.png';
how can add this img to pdf?

Apparently, you cannot do this. What you can do is to put the images in the android (I don't know how to do this for iOS) folder of your react native project. There is a folder called assets at your_rn_project/android/app/src/main where you can put your media files.
To render an image in your PDF file, you are going to use something like this: src="file:///android_asset/images/your_media_file.png". Note that android_asset points to your your_project/android/app/src/main/assets.

Thank you, you gave me a north!! :)
I think it took me a few hours to get mine to work, i tried so many ways and had to generate the pdf every time..
this is how it worked for me <img src="file:\\android_asset\\images\\img.png" />

I am able to get images stored in the local Documents directory to show by changing the following code in the RNHTLtoPDF.m file (lines 174-184) and writing the HTML string to a file called "html2pdf.html" saved to the Documents/htmlDirectory/ folder:
`
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSURL *baseURL = [NSURL fileURLWithPath:documentsDirectory];
NSURL *baseURL2 = [baseURL URLByAppendingPathComponent: @"htmlDirectory"];
NSURL *baseURL3 = [baseURL2 URLByAppendingPathComponent: @"html2pdf.html"];
dispatch_async(dispatch_get_main_queue(), ^{
    [_webView loadFileURL:baseURL3 allowingReadAccessToURL:baseURL];
});

`


docs: Better document hooks and TypeScript support

Resolves https://github.com/zeit/node-file-trace/issues/103 and https://github.com/zeit/node-file-trace/issues/73.

Codecov Report

Merging #108 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #108   +/-   ##
=======================================
  Coverage   88.57%   88.57%
=======================================
  Files          13       13
  Lines        1129     1129
=======================================
  Hits         1000     1000
  Misses        129      129

Continue to review full report at Codecov.

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


"Drănic" is listed in the drop-down menu

Description:
"Drănic" is listed in the drop-down menu alongside its corresponding county and commune, according to the law.
Precondition:
The website is up an running.

Step 1
Type "Drănic" in the search bar.

Expected results
The location is listed in the drop-down menu as "Comuna Drănic, DOLJ".


Date picker edit timesheet entry

Notion card
https://www.notion.so/saeloun/User-should-be-able-to-edit-the-date-for-a-time-tracking-entry-On-clicking-the-date-field-a-custom--1b82e058bbb64d91b4aee68a870f6cb7
Summary

The date picker should pop up on clicking the date while editing the timesheet entry.
After choosing a date it should update the timesheet entry and change the date on that entry.

Preview

Type of change
Please delete options that are not relevant.

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

How Has This Been Tested?

Checklist:

[ ] I have manually tested all workflows
[x] I have performed a self-review of my own code
[ ] I have added automated tests for my code

@supriya3105 Before I review this PR Can we Ask Akash for the design? Because in the image attached I can see the calendar's height much more than the card's height and it hides the hours logged field also.

@apoorv1316 There are some UI issues occurring.

Day, week and month have different sizes.
Clicking on a date with a timesheet entry makes the calendar bigger.
Edit and delete button disappeared

@abinashpa FIx failing tests also refer to the design for calendar positioning https://www.figma.com/file/4gdPDRPqGqQqPYsO3Qj8CG/Miru-App?node-id=8207%3A77554
cc @supriya3105

@abinashpa Something is breaking on this PR. Please check

@abinashpa Something is breaking on this PR. Please check

On it.

New UI.

@abinashpa I changed the props in the custom date picker to be more generic. Make changes in your PR accordingly

@abinashpa Please check this

@apoorv1316 Everything is working fine, Can't reproduce the error.

@abinashpa resolve conflicts

@abinashpa I resolved the conflicts & also Fixed the Updating time entry based on date change. Please make the requested changes like useOutsideClick helper to close the date picker instead of custom code. Please test the app before you make any changes.

@abinashpa This is already fixed on the develop. Ref: #654 Please have a look and change your PR accordingly.
cc: @apoorv1316

@apoorv1316 I have fixed the billable issue, please do a test again.

@prasanthchaduvula Can you review it one more time, please?

@apoorv1316 I don't think this PR properly got rebased with develop branch. Please test all the functionality this PR handles along with the complete time sheet entry page functionality as well

@abinashpa Please resolve conflicts. We just merged a hackotberfest PR in develop.


tower_lsp::ClientSocket is (potentially) missing some functionality from lspower::MessageStream

In influxdata/flux-lsp#427, the flux-lsp moved from lspower to tower-lsp because the merge had occurred. The reason we had used lspower in the first place is because we needed to be able export the lsp server via wasm. We have a wasm interface that looks like this (expressed in TypeScript):
interface LspServer {
  run(): Promise<void>;
  send(message: String): Promise<String>;
  onMessage(handler: (message: String) => String): void;
}

The idea here was that you could request things from the server via send, and any time that the server needed to initiate diagnostics, logs, notifications, etc. via the onMessage handlers. The way we implemented this is something similar to this (you can read the full source in the PR/repo)
let (service, messages) = LspService::new(...);

while let Some(msg) = messages.next().await {
  ...some code for handling msg...
  for h in onMessageHandlers {
    h.call1(msg);
  }
}

Somewhere between the change from lspower::MessageStream to tower_lsp::ClientSocket, that message firing from the server is broken. While trying to dig into the issue, a lot of the introspection isn't possible because ClientSocket has a lot of private interfaces (which probably isn't related to the issue, but maybe something to consider for debugging going forward). What am I missing? How did the interface change so that messages.next().await doesn't ever loop, no matter how many messages the server sends to the client.

Thanks for opening this ticket! If you check the Stream implementation of ClientSocket today (source), it delegates down into the underlying futures::channel::mpsc::Receiver<_> implementation of Stream. This is pretty much the same as how the old Client and MessageStream worked, albeit with a new abstraction around it.

How did the interface change so that messages.next().await doesn't ever loop, no matter how many messages the server sends to the client.

Do you think you could elaborate on what you mean by this? In the code snippet above, I cannot see how service is being driven. The LspService must be actively emitting server-to-client messages for messages.next().await to yield them, and since there isn't any service.call(...).await nor is service passed into Server::new, I can't understand how the loop would ever progress as described. I'd love if you could provide more details!

Thanks for the reply. I've been fighting trying to solve this bug for quite a bit; I don't see that much functional difference.
We have an exported run function that essentially fakes an event loop and runs forever. That calls server.processor.process().await (with some error handling). Our send function is where service.call is called, but I didn't think that'd have much to do with messages originating from the server; you asking about it makes me wonder if I need to be looking at this solution holistically, and potentially evaluating whether or solution is hacky or not.

@rockstar I'm not really sure why the approach you described worked before but doesn't work now, but I am wondering if the problem might go away if you could avoid using the custom LspServer interface and instead set things up through Server::new as usual.
In the case of a wasm target, I believe you should be able to use the web Streams API. There is a wasm-streams crate that provides adapters between the Streams API from web-sys and the usual futures Streams, along with impls for AsyncRead and AsyncWrite, which you will need for connecting everything up with Server::new.
Below is a quick sketch that compiles but doesn't really do anything, although perhaps it can give you some ideas of how to proceed. (For your actual implementation I suppose you would want to implement some sort of custom (web) streams that let you pass messages in and observe the responses.)
#![cfg(target_arch = "wasm32")]

use flux_lsp::LspServer;
use futures_util::stream::{TryStreamExt};
use js_sys::Uint8Array;
use tower_lsp::{LspService, Server};
use wasm_bindgen_test::*;
use wasm_bindgen::{prelude::*, JsCast};
use wasm_streams::readable::*;
use web_sys::TextEncoder;

#[wasm_bindgen(inline_js = "
export function new_readable_stream_from_array(chunks) {
    return new ReadableStream({
        start(controller) {
            for (let chunk of chunks) {
                controller.enqueue(chunk);
            }
            controller.close();
        }
    });
}")]
extern "C" {
    pub fn new_readable_stream_from_array(chunks: Box<[JsValue]>) -> sys::ReadableStream;
}

wasm_bindgen_test_configure!(run_in_browser);

#[wasm_bindgen_test]
async fn it_works() {
    let message = r#"{"method": "initialize", "params": { "capabilities": {}}, "jsonrpc": "2.0", "id": 1}"#;
    let message_with_headers = format!("Content-Length: {}\r\n\r\n{}", message.len(), message);

    let bytes: Vec<u8> = TextEncoder::new().unwrap().encode_with_input(&message_with_headers);
    let bytes: Uint8Array = bytes.as_slice().into();
    let bytes: JsValue = bytes.into();

    let stdin = new_readable_stream_from_array(vec![bytes].into_boxed_slice());
    let stdin = ReadableStream::from_raw(stdin);
    let stdin = stdin
        .into_stream()
        .map_ok(|value| value.dyn_into::<Uint8Array>().unwrap().to_vec())
        .map_err(|_err| std::io::Error::from(std::io::ErrorKind::Other))
        .into_async_read();

    let stdout = wasm_streams::writable::sys::WritableStream::new();
    let stdout = wasm_streams::WritableStream::from_raw(stdout);
    let stdout = stdout.try_into_async_write().unwrap();

    let (service, messages) = LspService::new(|client| LspServer::new(Some(client)));
    Server::new(stdin, stdout, messages).serve(service).await;
}

The wasm-based project that I linked to above is now a fairly complete example which fully demonstrates how to use tower-lsp with the intended API in a wasm context. I'd be happy to answer any questions about how that was set up but otherwise I think it's safe to close this since the original motivation was to be able to use tower-lsp for a wasm target.

I'm not sure I agree that the bug is fixed. Sure, you've provided a workaround, but there's a disconnect where "what worked then doesn't work now" in an absolutely public api. The workaround is definitely something to explore, but this would require an re-architecture of a large portion of more than one application. As it stands, the migration from lspower to tower-lsp is a no-go for us.


Update stable version in repo from 0.0.0 to 1.0.1

Think about adding version 1.0.1 to stable repository.
Version: stable=0.0.0 (0 days old) => latest=1.0.1 (30 days old)
Installs: stable=0 (0%), latest=8 (42.11%), total=19
Click to use developer portal
Click to edit
Note: This is an automatically generated message and not personally authored by bluefox!
Do not close this issue manually as a new issue will be created if condition for update still exists
@mcm1957 for evidence

This issue seems to be outdated.
This issue suggests to update the stable version of this adapter to 1.0.1 but the current stable version is already 1.0.1.
So this issue should be closed.
@mcm1957 for evidence


Create a new Contact Us page with up-to-date info

The page should contain all of the links below which currently only appear in the near.org footer, additionally it should contain neardevhub.org and devhub's telegram, and perhaps the Subscribe to Newsweek option as well.

@vanessadespain wdyt?

Totally agree! Thank you for starting this!

See design intake form here

Note to maybe add customer support CTA at lower right --> @reiokam

Draft designs ready for review, with open questions.
Raw figma here.
Since I will be out until 4/10/2024, @vanessadespain could you help unblock @charleslavon and @calebjacob during that time?

cc @reiokam could you weigh in on the right call-to-action / channels to direct and triage requests for support?
This appears in the logged in context. User is most likely a developer, but could be any current user with a near account.

I think this page will also be available from the logged-out/marketing experience — replacing this page that's available from the "About" menu on near.org
I can help keep this effort moving while Xuan is OOO <3

Here's the direct link to the Support Help Center - https://nearhelp.zendesk.com/hc/en-us/requests/new?ticket_form_id=360005876614
Here's the direct link to another Support Form that could be purposed for Developers - https://nearhelp.zendesk.com/hc/en-us/requests/new?ticket_form_id=13521080858775

@vanessadespain @xuan-ytr Good questions. We're currently using that existing logged-out contact us page on the new logged-in UI as the support link. I'm mostly interested in the redesign for the logged in experience. It can be up to Laura if they want to use this new contact us page for the marketing site.

TLDR: I've put together three variations of the support cards from Xuan's design to weigh which support features we utilize.  View here
V1 - There are 2 support forms, one for resolving an issue and the other for providing feedback.
V2 - Link 1 goes to the Zendesk Help Center, Link 2 goes to the support form
V3 - Link 1 opens Zendesk's Ai chat bot, Link 2 goes to the support form.
Hey @reiokam! After reviewing the support links you shared it looks like they're both the same form, just one has already selected "General Inquiry" from the dropdown (https://nearhelp.zendesk.com/hc/en-us/requests/new?ticket_form_id=360005876614)
And the other is without selection in the dropdown (https://nearhelp.zendesk.com/hc/en-us/requests/new?ticket_form_id=13521080858775)
I tracked that the URLs match up when I toggle between those two states. Perhaps we just link to the form that has no selection made in the dropdown? And/or maybe we can add an option to that dropdown for "Development issues"?
In the event we don't have a chat support feature we could possibly use the "Chat" card in the design to give Developers a direct path to a Developer support form? I'm curious @charleslavon if you think this is a valuable support path for developers — i'm not confident that this is a pattern that developers will use, but we could try and see.
@reiokam Additional questions for you:

Can you confirm that we don't have a customer support chat feature? I saw in Zendesk there's an Ai chat bot.
Could you put together a list of Frequently Asked Questions and answers we could use to populate the FAQ?

I also noticed that on the zendesk page the Near logo in the top left goes to the wallet transition page instead of near.org.

Thanks @vanessadespain !
Yup, both forms will lead to the same end-point on the Zendesk side. Sorry, after reviewing looks like there were some changes that were made with the recent "Multi-Chain Support" changes, these two were previously similar forms with one form having more options and fields to get more details from the user. Happy to update it to include the "Development Issues" one.

Confirmed that we don't have the chat feature right now available and we haven't activated the AI feature.
Yup, happy to put some FAQS together maybe 3 or 4 questions, let me know if more is needed? (Thinking Developer Resources, Expectations of Responses?)

Yup, happy to put some FAQS together maybe 3 or 4 questions, let me know if more is needed? (Thinking Developer Resources, Expectations of Responses?)

I was going to ask about the FAQs for the technical implementation. Sounds like we'll just be hardcoding some content and don't need to worry about building out a robust FAQs management system - at least for now.

@calebjacob Yeah I think for now we'll just hardcore the content and we could consider later on if this will need updating more regularly.

@vanessadespain let me know when you would ideally like the FAQ completed by and I can prioritize on my side? Would Google Docs work, but let me know if you have another preference?

@reiokam EOW would be ideal I think so that Engineering can pick it up with next sprint. Is that doable? Ping me if you’d like to collab or see any content in the context of the designs.
Google doc should be good though!
With the update you gave I think that the option 2 I shared would be the route to go, relating to the card content. One of the cards leads to you ZenDesk Help Center, allowing more content to be added there without needing to necessarily engage engineering to update this Contact page. And the second card would link to that support form you shared.

Moving this to blocked for the dev work until we've confirmed the designs are ready. What's your status on the design side @vanessadespain? I'm seeing a few versions in the Figma file and I'm not sure what's ready to implement. Thanks!

Here is the design direction with the support channels that are most accurate to what's used by the Support team currently. Shown in Figma here
Status: Copy is still WIP, especially for the FAQ section.

Support Links
Help Center: https://nearhelp.zendesk.com/hc/en-us
Support Form: https://nearhelp.zendesk.com/hc/en-us/requests/new
Social Channel Links
DevHub: https://near.org/devhub.near/widget/app
Telegram: https://t.me/cryptonear
Discord: https://near.chat
Discourse: https://gov.near.org
Facebook: ???
Reddit: https://www.reddit.com/r/nearprotocol/
Warpcast: ???
YouTube: https://www.youtube.com/channel/UCuKdIYVN8iE3fv8alyk1aMw
GitHub: https://github.com/near
Docs: https://docs.near.org
WeChat: https://pages.near.org/wechat?_gl=11bs2mbz_gaMjcwMzgxMjUuMTcwOTc1MTM3Mg.._ga_9GWCXQJ62J*MTcxMjYwMTY0MC42MC4xLjE3MTI2MDIzNTcuMzcuMC4w
X: https://twitter.com/nearprotocol
@xuan-ytr Do you have guidance on a couple of these missing links? And what the counts next to each link should reference? Any additional thoughts/changes you'd like to see?

Thanks for the update! I have some other tickets I can work on for now while we wait for the copy to be finalized.

@vanessadespain @xuan-ytr It looks like our Facebook URL would be this: https://www.facebook.com/NEARProtocol
I'm going to hide the Warpcast link until we get a URL - couldn't find that one with Google.

@xuan-ytr Do you have guidance on a couple of these missing links?
Thanks @calebjacob for hunting down the Facebook link!
Warpcast: https://warpcast.com/~/channel/near

And what the counts next to each link should reference?
We can omit the counts for now since they aren't relevant for every platform. The original thought was that it could generate some excitement to see that we have 1.9M followers on Twitter, for instance.

Any additional thoughts/changes you'd like to see?
All looks good to me!


Can't run a service on Docker swarm mode

Description

I'm trying to run a service on Docker swarm mode and it just fails and there is no way to debug it. I can do a docker run just fine, just not docker service create
Steps to reproduce the issue:

docker service create --name vegeta nlsun/vegeta "sleep infinity"

Describe the results you received:
Lots of dead containers. No idea why it never comes up.
Describe the results you expected:
A container to start and stay up.
Additional information you deem important (e.g. issue happens only occasionally):
Output of docker version:
Client:
 Version:      1.12.2
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   bb80604
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.2
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   bb80604
 Built:
 OS/Arch:      linux/amd64

Output of docker info:
Containers: 6
 Running: 0
 Paused: 0
 Stopped: 6
Images: 2
Server Version: 1.12.2
Storage Driver: overlay
 Backing Filesystem: xfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: overlay bridge null host
Swarm: active
 NodeID: 5f6ignoig5ptgg3pve2boisdy
 Is Manager: true
 ClusterID: e2an4ca46jys2cm17yalktcqb
 Managers: 1
 Nodes: 3
 Orchestration:
  Task History Retention Limit: 5
 Raft:
  Snapshot Interval: 10000
  Heartbeat Tick: 1
  Election Tick: 3
 Dispatcher:
  Heartbeat Period: 5 seconds
 CA Configuration:
  Expiry Duration: 3 months
 Node Address: <IP_ADDRESS>
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.10.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 14.28 GiB
Name: ip-10-10-0-9
ID: Q563:FZS5:ZX55:DDA2:M6ME:UXTV:HGYK:AM6F:TK3J:LD7K:XSFB:DR37
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 <IP_ADDRESS>/8

Additional environment details (AWS, VirtualBox, physical, etc.):
AWS

You can see error message in the output of docker service ps, for example:
docker service create --name foobar blablabla

docker service ps foobar
ID                         NAME          IMAGE      NODE  DESIRED STATE  CURRENT STATE            ERROR
85bjjb7benyw4nrwk0w1ka7l8  foobar.1      blablabla  moby  Ready          Preparing 1 seconds ago
dddmyeaza5vlqpkpizr271we9   \_ foobar.1  blablabla  moby  Shutdown       Rejected 1 seconds ago   "No such image: blablabla:late…"

And inspect a failed task;
docker inspect dddmyeaza5vlqpkpizr271we9
[
    {
        "ID": "dddmyeaza5vlqpkpizr271we9",
        "Version": {
            "Index": 88
        },
        "CreatedAt": "2016-10-14T19:10:05.573663982Z",
        "UpdatedAt": "2016-10-14T19:10:08.046481579Z",
        "Spec": {
            "ContainerSpec": {
                "Image": "blablabla"
            },
            "Resources": {
                "Limits": {},
                "Reservations": {}
            },
            "RestartPolicy": {
                "Condition": "any",
                "MaxAttempts": 0
            },
            "Placement": {}
        },
        "ServiceID": "18z3b6mqe45mv5wrk0bss3cb0",
        "Slot": 1,
        "NodeID": "0unfjj5jh0e0fnw9z1tiuv0e8",
        "Status": {
            "Timestamp": "2016-10-14T19:10:07.820327371Z",
            "State": "rejected",
            "Message": "preparing",
            "Err": "No such image: blablabla:latest",
            "ContainerStatus": {}
        },
        "DesiredState": "shutdown"
    }
]

We are working on improving the logs to allow getting the logs for the containers backing a service more easily; see https://github.com/docker/docker/issues/24812
I'll close this issue, as we're tracking this through https://github.com/docker/docker/issues/24812, and I hope the above suggestions help you further in finding why your service doesn't start. Also feel free to continue the discussion here

Thanks! So I got a bit more info, but how do I get the full error?
7zqv9qggt1i9m8lo0dpexczmb   \_ vegeta.1  nlsun/vegeta  ip-10-10-0-9   Shutdown       Failed 18 seconds ago             "starting container failed: in…"

@thaJeztah ^

i think it should be visible in docker inspect 7zqv9qggt1i9m8lo0dpexczmb

ahh, I see, I was doing a docker service inspect vegeta and seeing a similar looking json and thinking that that was what you posted above. I see now that that the actual child id is what I should have inspected. Thanks!


Add bindings for Exchanges.

Previously this issue was tracked in #26, but it's complex enough that I figured we'd make it a separate issue. We want reason-urql to add support for exchanges. This shouldn't be too difficult, as urql already has a set of exchanges that are a part of the core API. We just need to expose those using<EMAIL_ADDRESS>declarations. Adding exchange types will be a bit more complex and should be based off of the urql/types.ts module.
Roadmap

[x] Add bindings for exchange types.
[x] Add support for shipped exchanges.
[x] Add support and example for using some of the shipped exchanges.
[x] Add support for custom exchanges.
[x] Add specific config for subscriptionExchange.

Closed by #41 and #42.


Fix typo in deployer start-docker-proxy

@consideRatio I don't see consensus the issue linked that is an adopted policy.

@pnasrat the cancelled workflow was the workflow responsible for commenting on this PR that a CD has started I think, while its actually ended up making a full re-deploy in https://github.com/2i2c-org/infrastructure/actions/runs/4305541369.
Feel free to ignore the failure in utoronto staging, I'm working to figure that out already!

Ugh that was unobvious to me, I guess I thought it was just the early stage of the deploy and cancelling would not trigger any further actions


Allow implicit annotation discovery in @Bapi types

The Java code in the introductory example looks much longer than necessary. To make the code shorter, I propose the following:
@Bapi(value = "BAPI_SFLIGHT_GETLIST", implicit = true)
public static class SflightGetListBapi {

    public final String fromCountryKey;
    public final String fromCity;
    public final String toCountryKey;
    public final String toCity;
    public final String airlineCarrier;
    public final boolean afternoon;
    public final int maxRead;

    @Parameter("RETURN")
    public BapiRet2 returnData;

    @Table
    public List<Flight> flightList;

    // Auto-generated constructor omitted for brevity
}

The above code with the implicit = true annotation would be equivalent to the longer code. The annotations @Import, @Export and @Parameter would be added by the following rules:

Each final field counts as annotated with @Import
Each non-final field counts as annotated with @Export (debatable)
Each @Import or @Export field without a @Parameter counts as being annotated with @Parameter($fieldName$.toUpperCase())
The type = STRUCTURE is not necessary since the type BapiRet2 is neither a simple type nor a list. Therefore it can only be a structure.

I added the implicit = true to preserve backwards compatibility. Existing code might extend AbstractClass and that abstract class might define fields that should not be parameters.

Thanks for the proposal. I think it's a great idea to add some more conventions here like JPA et. al. provide.
Re: the missing @Parameter annotation, I think we should map camel-case to underscores, e.g. fromCountryKey -> FROM_COUNTRY_KEY, this is more SAP-like. We could even allow different strategies here.
We'd also need to add some kind of a @Transient annotation to allow additional fields that aren't mapped to a BAPI parameter.
@rillig-ite, Would you provide a pull request?

Sure, I can do that. Up to now I have never used Hibersap in practice, so I will first take my time to learn the SAP naming conventions and how to best convert them into implicit, generally applicable rules.


Coral-Spark: Register generic_project UDF

We need to register generic_project UDF if it's used in Spark SQL, otherwise Spark will throw the following exception because it can't recognize generic_project:
org.apache.spark.sql.AnalysisException: Undefined function: 'generic_project'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 7

Tested on gateway with Spark3, the affected view can be queried with this PR.

Thanks for fixing this issue, @ljfgem
LGTM!


MarkdownScrollViewer: How to disable vertical scrollbar?

That's for case when doc is relatively small and it contains a code-block. Since TextEditor has its own ScrollBar it leads to displaying 2 ScrollBars.

I will disable the vertical scrollbar of TextEditor.
If you can't wait for me, please edit MarkdownScrollViewer.Styles to disable VerticalScrollBarVisibility.
<!-- xmlns:md="clr-namespace:Markdown.Avalonia;assembly=Markdown.Avalonia" -->
<!-- xmlns:avedit="https://github.com/avaloniaui/avaloniaedit" -->

<md:MarkdownScrollViewer>
  <md:MarkdownScrollViewer.Styles>
    <Style Selector="avedit|TextEditor">
      <Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>
    </Style>
  </md:MarkdownScrollViewer.Styles>
</md:MarkdownScrollViewer>

Thank you. Closing the issue then

v0.10.7 was released to fix this issues.


Use bigint Binomial for Choose function

A comment in the original said,

I am surprised that I have to define these. . . Maybe i just didn't look hard enough for a lib.

The choose function is also known as the binomial coefficient, and this exists in math/big for Ints.
What
This PR replaces the contents of NChoseK() with a call to math/big's Binomial(). It does some conversions so that no changes need to be made in how NChoseK is called.
Why?
Why make this change?

Mostly because I saw the comment quoted above
The particular implementation in the original is inefficient for large numbers. Binomial coeffients are better implemented using the log gamma function instead of calculating factorials the slow way. Though perhaps using a big integer library loose some of that.
It may be cleaner to use integer arguments instead of float64 at this point, and this change now will make that easier to do sometime in the future.

What this doesn't do

It doesn't correct the spelling of "NChoseK" (which should be "NChooseK". "Choose" is a really strange word and tempting to misspell). I wanted to make a small change, only touching the one function.
It does not adjust the calling code to make use of integers. I do not understand why float64 is used so much in this package, and so it would be silly for me to tinker with that before understanding the reasons for the current choices.

Possible objections

The move to using big Ints may be a performance hit. (I don't think it will be, but I have not benchmarked the two on the sorts of numbers used.
It requires yet another import: math/big

Although I do acknowledge those as legitimate objections, I wouldn't be submitting this PR if I didn't think the benefits outweigh them.

I didn't even notice that I spelled choose wrong. I have some time coming up later this week and wanted to spend some time on this library, so i will take a deeper look at this (and other PRs) then.
for why floats are used. . . I can't remember. I wrote this when I was first learning Go and it has many many issues that I need to go back and fix.


Script to Download and include Supervised Learning

After the contribution of many people we built a gold standard as reference to indicate if a reimbursement is a generalization or not.
Example of generalization:
5635048.pdf
Not a generalization:
5506259.pdf
Our sample of reference consists in 1691 suspicious, and 1691 not suspicious reimbursements link. It was manually curated as explained in this video made by Felipe Cabral apoia.se
The goal of this dataset is to deal with this part of CEAP:

O documento que comprova o pagamento não pode ter rasura, acréscimos, emendas ou entrelinhas, deve conter data e deve conter os serviços ou materiais descritos item por item, sem generalizações ou abreviaturas, podendo ser:

Thus, this issue aims the following:

Transfer the files i have in google drive to Amazon S3
Create a script to download the above files in the toolbox. It could be a new category of datasets, e.g., Supervised Learning
Create a script to download pre-built Machine learn models to Rosie

First objective, find hereafter the files i have:
PNG images
CSV reference
Regarding the CSV files, we have to include the direct link to chamber of deputies. Right now it only has the link to Jarbas.
To easily do that, you have to take the document id from CSV file, and get the full link using a method like that:
def document_url(record):
    return 'http://www.camara.gov.br/cota-parlamentar/documentos/publ/%s/%s/%s.pdf' %\
        (record['applicant_id'],record['year'], record['document_id'])

The Dataset i used was this one:
data = pd.read_csv('../data/2016-11-19-last-year.xz',
                   parse_dates=[16],
                   dtype={'document_id': np.str,
                          'congressperson_id': np.str,
                          'congressperson_document': np.str,
                          'term_id': np.str,
                          'cnpj_cpf': np.str,
                          'reimbursement_number': np.str})

data=data[data['subquota_description']=='Congressperson meal']
data=data[data['document_id'].isin(doc_ids)]
# The doc_ids are retrieved from the csv file

The first objective will allow more people to have access to these curated files in order to replicate and create new experiments!
Second objective: The goal is to call some method like:
from serenata_toolbox.chamber_of_deputies.dataset import Dataset
chamber_of_deputies = Dataset(self.path)
chamber_of_deputies.fetch_supervised_learning()

It makes the integration of the mentioned files easily in other parts of project, e.g., Classifier using these files, Analyse using these data
Third objective, as you can see in the mentioned link: Classifier using these data](https://github.com/datasciencebr/rosie/pull/66)
To upload big files in git is not a good practice. Therefore to facilitate the contribution of new models to Rosie we have to create a method to specify which model we would like to retrieve.
Example right now:
 classifier.__name__ == 'MealGeneralizationClassifier':
 model = classifier()
 model.fit('rosie/chamber_of_deputies/classifiers/keras/model/weights.hdf5')

Proposed:
 classifier.__name__ == 'MealGeneralizationClassifier':
 model = classifier()
 model.fit(self._model('generalization'))

It will allows us in the future to include more models and re-training the existent ones to be more robust.
To this task find hereafter my model:
Meal Generalization
PS: To upload files we have this method in the toolbox remote.py

Thus, this issue aims the following:

Transfer the files i have in google drive to Amazon S3
Create a script to download the above files in the toolbox. It could be a new category of datasets, e.g., Supervised Learning
Create a script to download pre-built Machine learn models to Rosie

Hooray. Let's avoid reinventing the wheel.
Actually these 3 points are already here.. We have methods for that in serenata_toolbox.Datasets. The only detail is that uploading is not open to everybody for security reasons. What people usually do is to share in the PRs a link to a (temporary) storage such as WeTransfer, Dropbox, Google Drive etc. and then someone with the API keys to handle the upload puts the file there.
Also I don't think that by now we need a special directory, method or class for supervisioned learning files.
Finally downloading the PDF is already automated.
That said the focus of this issue is simply to foster the development of a script/method able to generate this file (i.e. port it from the other repository/notebook to the toolbox in case anyone willing to reproduce our steps wants to star for scratch). Basically the starting from .pdf to .png.

Hi @cuducos
Thanks so much for the remarks! I will try my best to highlight the differences i would like to point in this issue.

Actually these 3 points are already here.. We have methods for that in serenata_toolbox.Datasets

I totally agree with you that all methods to download a determined quantity of reimbursements or full datasets are already implemented as well the methods to upload it using proper credentials.
Therefore, the focus of this issue is not to reinventing the wheel, but to integrate these curated reimbursements and files to the serenata_toolbox.

Lets suppose we have a classifier to deal with handwrite reimbursements, and someone would like to test Rosie using these curated files. Since internet connection is always a problem in some regions of Brazil, download 700MB of images (or more) at once reduce the usability of this dataset. Therefore, after to discuss with @jtemporal  we thought that to have a csv file which allows smoothly reconstruct the structure of this dataset (training[positive, negative] | validation[positive/negative] | pos_validation[positive, negative]) could be could be an asset.

Backup of these files: The previous experiences showed that sometimes the chamber of deputies remove the invalid reimbursements.  So what will happen to download link is a mystery. I'm okay to have pdf or png filed stored. The only point is to convert pdf to png is time consuming too. Since we can have a backup of transformed files IMHO is better to have it in png.

Training phase: Since the model of this dataset is hardly changed, to train Rosie which new run to produce the same model is also time consuming. In my machine it took 3 hours. I guess we could have pre-built models that will be changed once a year.

Also I don't think that by now we need a special directory, method or class for supervisioned learning files.
I agree that right now could be early to it. We only have this curated dataset and one classifier. However in case more people build such models, the future architecture of the serenata-toolboox can smoothly deal with this demand. Furthermore, It could open the opportunity to receive new contributions to Rosie.

That said the focus of this issue is simply to foster the development of a script/method able to generate this file (i.e. port it from the other repository/notebook to the toolbox in case anyone willing to reproduce our steps wants to star for scratch). Basically the starting from .pdf to .png
As i mentioned in 1 and in my experience building these curated files, the removal of files in the chamber is always a surprise. While i was publishing the csv in google docs, me and felipe cabral have seen some reimbursements without the link for the pdf, even i had all these files in my computer because i downloaded it one month before.
So, more than reproduce the experiments we are losing curated reimbursements. I mean, we only have the link, not the pdf or image to show it in the chamber and ask for clarifications.
Maybe we could discuss and Restructure it better.

Ok… first a minor comment:

The only point is to convert pdf to png is time consuming too. Since we can have a backup of transformed files IMHO is better to have it in png.

I agree that we could have this receipts converted to PNG and stored. And we can upload anything we want to some storage like S3. The point is that anything uploaded there must be produced from scripts available in our repos ; )
That said, the issue is ver straightforward IMHO:

[ ] Bring fetch_receipt.py to the toolbox
[ ] Implement the code that trains Rosie as part of the toolbox (after all we need to allow most avid collaborators to generate their training models for whatever reason)
[ ] Maybe rename serenata_toolbox.Datasets to something like serenata_toolbox.Storage (to let ir clear that it handles any kind of files, and not only datasets; and TBH there's nothing in its implementation that limits it to datasets, it's basically a file management object).
[ ] Generate a version of the images and of the trained model to upload to the storage (S3)
[ ] Celebrate? ; )

Am I missing anything?
Many thanks for all the effort and clarification, @silviodc — let's tackle it!

Continuing...

The point is that anything uploaded there must be produced from scripts available in our repos ; )

Do you mean, you would like to do this workflow in our machine in order to upload the result to storage?
First workflow:

take the file csv with the references,
download the pdfs,
transform pdfs to png
generate the folder structure (training[positive, negative] | validation[positive/negative]
finally upload to storage?

Second workflow:

Download the previous reference
Train Rosie and upload the best generated model.

I'm okay with it. Even some recipes can not be download anymore, we still with a represent quantity of data.

Implement the code that trains Rosie as part of the toolbox (after all we need to allow most avid collaborators to generate their training models for whatever reason)

I didn't get your point here. Could you explain it better? I mean, once i have the reference data to generate a new model in my machine is easy.
The point i mentioned is: we should avoid the overhead to train references every time, since the model is hardly to change. I guess we have to allow people to download Rosie official models. I provided mine as base, however we can generate other.

Maybe rename serenata_toolbox.Datasets to something like serenata_toolbox.Storage
It's sounds much better now.

Generate a version of the images and of the trained model to upload to the storage (S3)

The version control of trained model is perfectly fine. However, if we change the image we also have to change the reference. It means curate again some parts of our gold standard. It is a laborious task to demand people to curate again something they have done before.
I think we could include new references, but never change the past curated.
What do you think?

Just clarifying the last part of my previous comment.

However, if we change the image we also have to change the reference. It means curate again some parts of our gold standard. It is a laborious task to demand people to curate again something they have done before. I think we could include new references, but never change the past curated.

Considering this part, take a look in this suspicious reimbursement found by Rosie
Probably at the beginning we will build the references classifying it as a positive suspicious. We will have a stored image and our models will use it during the training. What is fine.
However, as you can see the chamber changed the recipe. The deputy included an new page clarifying that this recipe is not suspicious. It is completely fine for the chamber's API. However for our robot or contributors it can brings some problems in the future if we always download the pdfs or use the csv reference alone.
That said, i also think we could provide the images in small blocks, e.g., [100MB]. To solve this:

Since internet connection is always a problem in some regions of Brazil, download 700MB of images (or more) at once reduce the usability of this dataset.

Furthermore, we have to say that these images reflects the csv references files, not if a reimbursement is suspicious or not in the chamber. It will avoid future surprises we can have using unclear terminologies/affirmations and the direct data from chamber's API.
We could go for a second phase of reclassification of these references, once a year and then change the entire reference. In IHMO it avoids inconsistence problems, that reflects in our training/predictions for supervised classifiers.

@silviodc Any news towards this issue?
Would you mind publishing your latest results and writing what's left so someone else could pick up?
CC @cuducos


Out of Order Updates

Server needs to ignore out of order client updates. It's currently crashing.

Ignore duplicates, too


openssl dhparam - verify destination is writeable

Hi,
I just generated some DH params, the process took a fair amount of time. I copy/pasted the command from another machine for generation on another but didn't change the destination file path.
This is clearly a pebkac but why not checking if destination path is writeable before generation?

WIP: see #904

Nice, thank you :)


Landing in No Man's Land

mobber.dev/<Anything> Just shows the black screen and Mobber logo. Should redirect to the main page.

@jdteasler This is fixed now


Bing not an option in Background Imagery

I am using version 3.1 of the Android app, and I've noticed that Bing is not an option in Background Imagery

Yes, my key exceeded a quota and is blocked now. I'll solve this by the next release.

Fixed in 3.2.


Reduce risk of baldness

http://www.snpedia.com/index.php/Rs6152

Just one step closer to a perfect human


Update documentation for 0.4 including Fresnel

[ ] update release text for 0.4, including add "what's new"
[ ] update Sphinx docs to have sufficient brief discussion of the Fresnel addition
[ ] re-run all notebooks to ensure the output is updated

[ ] consider updating the Sphinx template. The current one is something based on an earlier version of the astropy Sphinx template, probably sometime around astropy 0.2 ish. I don't really want to spend a lot of time on this right now, but Roeland did have a good point that we should add a link to the WFIRST page as well as the JWST one.

@josePhoenix do you have any strong opinions on Sphinx templates? I'm inclined to do a minimalist set of changes to make this labeled as multi-mission and leave it at that for now.

Notebooks re-ran, docs updated, Sphinx template tweaked a tiny bit.


Revert "Client Notes: Deleting Client Notes"

Mistakes were made
Reverts AY2021S1-CS2103T-F11-4/tp#203

ignore this PR. The draft PR was mysteriously merged to master but @qwoprocks got to see it still. so I'll just be adding a new PR for test updates and leaving the merged situation as is.


Docker container and Safari issues

Safari, MacOS 13.4.1
Any location.
I'm running WS4000 in Docker (via Portainer).  While going to your live version of WS4000 I can load the forecast for my or any other location fine.  When I open mine locally in Safari, the gps location button does nothing.  If I search for a location, I will get the suggestions and if I pick one, it will select but hitting "Go" does nothing.  "Reset" also does nothing.
If I try it on MS Edge for MacOS, it works fine.  If I try it from Edge in Linux (Ubuntu specifically), it works.  It's just my local Docker container version and only in Safari.  It's weird.  Any thoughts?

Geolocation (the GPS button) is intended to be used only across secure connections. All the browsers make exceptions for this for development purposes. But how each one is implemented is slightly different. I know Chrome considers localhost as a secure source for this purpose. I've never really dug into how exactly the other browsers handle the local exception.
If I had to guess, maybe you're going to http://<your local ip>/ instead of http://localhost/ when you're accessing your docker container and Safari doesn't consider that method local/secure.

Geolocation (the GPS button) is intended to be used only across secure connections. All the browsers make exceptions for this for development purposes. But how each one is implemented is slightly different. I know Chrome considers localhost as a secure source for this purpose. I've never really dug into how exactly the other browsers handle the local exception.
If I had to guess, maybe you're going to http://<your local ip>/ instead of http://localhost/ when you're accessing your docker container and Safari doesn't consider that method local/secure.

I've tried both the ip and localhost but no difference.  Just weird that it's only the one on my local machine but other pages that have the WS4K set up work just fine in Safari.  I'll play around with it more on my end, probably something goofy in my setup.  Thank you for the response!


[CARBONDATA-2883][ExternalFormat] block some operations  on external format table

Now some operatons are not supported for external format table, so those operations will be blocked as bellows:
1. update data on external format table
2. delete data on external format table
3. add columns on external format table
4. drop columns on external format table
5. change column datatype on external format table
The  operation in following scenario is not allowed:
create external format table if table columns not in tblproperty '{format}.header'
And add external format information for command 'desc formatted table'.
e.g.
CREATE TABLE fact_carbon_csv_table(empname String, empno int, designation string)
STORED BY 'carbondata'
TBLPROPERTIES(
'format'='csv',
'csv.header'='empno, empname, designation, salary',
'csv.delimiter'='|'
)
desc formatted fact_carbon_csv_table:
|##Detailed External-Format Information|                                                   |
|format                                              |csv                                                      |
|csv.delimiter                                     ||                                                          |
|csv.header                                        |empno,empname,designation,salary |
Be sure to do all of the following checklist to help us incorporate
your contribution quickly and easily:

[x] Any interfaces changed?
No
[x] Any backward compatibility impacted?
No
[x] Document update required?
No
[x] Testing done
Please provide details on
- Whether new unit test cases have been added or why no new tests are required?
- How it is tested? Please attach test report.
- Is it a performance related change? Please attach the performance test report.
- Any additional information to help reviewers in testing this change.
has added test case.
[x] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
NA

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/6365/

retest this please

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/6741/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8018/

retest this please

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/6766/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8044/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8061/

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/6403/

retest this please

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8078/

retest this please

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8079/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/20/

retest this please

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8106/

retest this please

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/6436/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8109/

retest this please

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8111/

retest this please

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/6439/

retest this please

retest this please

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/43/

retest this please

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8118/

retest this please

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8119/

retest this please

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/47/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/54/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8123/

retest this please

retest this please

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8133/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/62/

retest this please

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8135/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/64/

retest this please

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/8146/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/75/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/20/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:12545/job/ApacheCarbonPRBuilder2.1/63/

Build Failed  with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:12545/job/ApacheCarbonPRBuilder2.3/62/

Build Failed  with Spark 2.4.4, Please check CI http://<IP_ADDRESS>:12545/job/ApacheCarbon_PR_Builder_2.4.4/63/


Create an OpenMetadata python SDK for creating database service topology

User story
As a user i want to see my data product metadata in the open metadata catalogue
Value / Purpose
By having this class we can use this to create or update the data product , database and tables.
Hypothesis
If we have this functionality we will be easily able to create  create or update metadata and align with journey of data product registration
Additional information
https://dsdmoj.atlassian.net/wiki/spaces/DataPlatform/pages/4535877633/OpenMetaData+Catalogue
Use python SDK + Open Metadata Api to ingest data and create database topology throughout the user journey
Checklist

[ ]  Create a class which allow to create a database topology https://docs.open-metadata.org/v1.1.x/sdk/python#2-create-the-databaseservice
[ ] This is should be a seperate package
[ ] The modules of the class should be callable and each part of the topolgy called in the lambda (eg: create data product metadata can be called when registering the data product)

Definition of Done

[ ] Package is created and released
[ ]  Class created can be used  to create/ update dataproduct topology

Spoke to Jacob W today, he has set up the data-platform repo as a trusted publisher, so we don't need to manage credentials.

call the workflow file python-data-platform-catalogue.yml
data-platform-catalogue is the name of the package
if you need to pass an environment, use data-platform-catalogue

Metadata TODO
For parity with
https://github.com/ministryofjustice/modernisation-platform-environments/blob/main/terraform/environments/data-platform/data-product-table-schema-json-schema/v1.0.0/moj_data_product_table_spec.json
https://github.com/ministryofjustice/modernisation-platform-environments/blob/main/terraform/environments/data-platform/data-product-metadata-json-schema/v1.1.0/moj_data_product_metadata_spec.json
Table level:

[ ] table description
[ ] TBC: propagate owner/metadata

Metadata level:

[ ] Description
[ ] Domain (custom field???)
[ ] Owner
[ ] Email
[ ] Status
[ ] DPIA required (custom field??)
[ ] Retention period

Example of using tags: https://github.com/open-metadata/openmetadata-demo/blob/main/example_apis.py#L220C1-L220C81

Might need to add a query for fetching users by name. As we need to pass an ID in for owner and any other entityReference value


Logrus ampersand character escaped

Hello,
I have created the following question on stackoverflow, could you please have a look:
https://stackoverflow.com/questions/63010085/logrus-escaping-ampersand-character
So the problem is that ampersand is converted into its unicode hex value (I haven't yet checked other special characters, currently this one is needed only). Is there a way to display it as a character itself, rather than its hex value?
Thank you

Does the solution provided in issue #1135 resolve this?

@pradykaushik

Does the solution provided in issue #1135 resolve this?

oh yes, I received the answer on StackOverflow yesterday (regarding DisableHTMLEscape) but I forgot to close the issue, sorry for that. Thanks for assistance!


[RFC] ciao-controller: Add Config package support for ciao-controller

Add config package support for enabling Scheduler-provided cluster
configuration.
ciao-launcher start commands should look like:
  $ ./ciao-controller --cacert=/etc/pki/ciao/CAcert-example.com.pem \
        --cert=/etc/pki/ciao/cert-Controller-localhost.pem --url example.com

The options that were removed are:
    -computeport
    -httpscert
    -httpskey
    -identity
    -password
    -username

Implements part of issue #66
Above configurations are provided by Scheduler at launch stage.
Signed-off-by: Munoz, Obed N<EMAIL_ADDRESS>

Coverage decreased (-0.07%) to 57.246% when pulling 3d6294edf705218d86a224cc384c225cff64cbb8 on obedmr:config_controller into c218f4ba1525951ff85ba19590605f3497ea405e on 01org:master.

Coverage decreased (-0.08%) to 57.238% when pulling 6f5e55c76a0259faa432821ba9de4e26e0b39619 on obedmr:config_controller into c218f4ba1525951ff85ba19590605f3497ea405e on 01org:master.

Coverage decreased (-0.05%) to 57.269% when pulling 202cb55dd993e62d3021c3f537e2c84d842dae8e on obedmr:config_controller into c218f4ba1525951ff85ba19590605f3497ea405e on 01org:master.

These changes seem like they will work as long as the information provided is correct. LGTM.

i don't want to merge just yet since it will prevent us from configuring controller until the scheduler can pass the correct config info.

@kaccardi All our test clusters have been populated with the right configuration files now, and we documented this in the configuration README.
Tomorrow I will test @obedmr PR on a couple of clusters and will let you know if it works as expected.

@kaccardi with ciao-cli I could launch 20 instances with this patch on 2 test clusters, which means:

The compute port was correctly set
HTTPS certs were properly used
controller could correctly talk to the identity service

If you're fine with the code, I think we can merge that PR.

yes - I'm fine with the code.


Separate buttons for "accept all" and "save"

Hello,
I would suggest having separate labels (or buttons) for accepting all cookies and saving the settings made on the customize page. To my users it is confusing to have a button "Accept cookies" and after unselecting some cookies still have the same button, because the button seems like clicking it would still accept all cookies.
I would suggest keeping the the "Accept" button and letting it accept all cookies, but change the "Customize" button to "Save" after clicking it.
Here is an example:

Thank you!

Can this be merged, please? I am looking for this solution.


updating card colours to meet accesibility requirements

Have changed JS cards background colour to meet accessibility requirements

Great!


Create variable if doesn't exist in set_variable

Does what TODO mentioned there. I hope that's the correct way to do this.

First of all, thanks for the contribution!
But... I'm not sure I like this change. I know emilio wrote that he would like this, but I feel like this could leed to very strange behaviour.
I would definitely want to keep a notification in the output, because now you won't be notified if you made an typing mistake.
Maybe both would be okay, but again, I personally don't know what the use behind this would be.

I'd definitely want this as an optional setting with a big warning. I can see where it would be handy if you're making lots of arbitrarily named variables in your game, but as a default behavior, it seems... dangerous.

Yeah, sorry if I was confusing on that comment, but I believe it would be nice to create "local" variables to create and use only in the context of that timeline. I don't think that it is a nice default behavior since it can create more problems that it would solve.

Now that I think about it, I agree that it is a questionable idea at best. Because in the editor you can't use definitions that are not defined in the editor, so the only place that it would be useful would be for timelines generated at runtime, which I think is pretty niche.


500 Internal Server for every api endpoint

Like the title, i clone the app and start:dev and navigate to /docs. I tried healthcheck, /hello but all the same

{
"statusCode": 500,
"message": "Internal Server Error",
"_metadata": {
"languages": [
"en"
],
"timestamp":<PHONE_NUMBER>439,
"timezone": "Asia/Saigon",
"requestId": "adab6ee8-71ba-41d9-8fd5-5e147a06c7fd",
"path": "/",
"version": "1",
"repoVersion": "5.2.3"
}
}

the console is clean, no error was shown

Make sure you have already

run yarn install for install dependencies.
create .env file base on .env.example
migration the data into your database.

If you still getting error
try set the env variable DEBUGGER_SYSTEM_WRITE_INTO_CONSOLE and DEBUGGER_HTTP_WRITE_INTO_CONSOLE value to true for debug with console


Replace poetry with uv

https://docs.astral.sh/uv

This appears to be blocked on https://github.com/astral-sh/uv/issues/10056


⚠ Bofrost.lu has degraded performance

In 7b0b934, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2180 ms

Resolved: Bofrost.lu performance has improved in 5619930 after 21 minutes.


Fix/simplification of cursor positioning

I was experiencing weird behavior with cursor positioning, so I investigated and found that the system of tracking valid/invalid cursor coordinates was not functioning correctly when sending characters. I removed that system entirely and switched to the simplified form of just keeping a tuple for current cursor position. To fix my issue, I rewrote the character sending logic to:

Move the cursor temporarily to the desired character coordinate.
Write the character.
Move the cursor back to its previous location.

With this in place, my issues are gone. I'm open to any alternatives that still address my issue; this just seemed like the simplest solution.

Ah sorry, I didn't see that proposal at first. Even though I didn't modify any user-facing API calls, I do agree that using a naked tuple for cursor position isn't ideal. I'll change that to use a Position struct.

Looks good to me. Thanks for the PR!

Darn it, I didn't see the conflict there. I'm on my phone right now so I can't be of much help, but I'd love to get this merged today!

Got it merged and it should be good to go!

Just to be sure: we're losing two concepts here.

The concept of remembering the last position before the last cursor pos set.
The ability to have a None cursor pos.

It doesn't seem to me like it's a big deal to lose them (that is, it seems to me that it has no impact whatsoever on the way the library works), but maybe the @cpjreynolds would know better of the implications of those two losses.

@hsoft I may be wrong, it has been a few months since I wrote it, however I am fairly sure the last cursor position was stored to optimize some cursor movement, since if we know the current cursor position is sequential to the last, we won't need to emit an escape sequence to re-position. I'll take a closer look at this to be sure.

I'd like to apologize for essentially abandoning this project for so long, personal issues came up and it has been a rough year to say the least. That being said, the college application nightmare is over and I am going to have all summer to be able to work on this project! I'd like to start back off with a clean slate so I'm going to close this PR for now, however if you would like to revisit this, please do not hesitate to open another PR in the future!


Bump decompress from 4.2.0 to 4.2.1

Bumps decompress from 4.2.0 to 4.2.1.

Release notes
Commits

Signed-off-by: dependabot[bot]<EMAIL_ADDRESS>

👷 Deploy Preview for compassionate-babbage-adc1e6 processing.
🔨 Explore the source changes: 11965e4dc424ae20809174d07cb359beeea9677a
🔍 Inspect the deploy log: https://app.netlify.com/sites/compassionate-babbage-adc1e6/deploys/61dfa7c0e3eab200082326a2