text:
pgbouncer readinessProbe timeouts cause livenessProbe failures

Checks

[X] I have checked for existing issues.
[X] This report is about the user-community Airflow Helm Chart.

Chart Version
8.5.3
Kubernetes Version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3", GitCommit:"816c97ab8cff8a1c72eccca1026f7820e93e0d25", GitTreeState:"clean", BuildDate:"2022-01-25T21:25:17Z", GoVersion:"go1.17.6", Compiler:"gc", Platform:"linux/amd64"}

Server Version: version.Info{Major:"1", Minor:"21+", GitVersion:"v1.21.5-eks-bc4871b", GitCommit:"5236faf39f1b7a7dabea8df12726f25608131aa9", GitTreeState:"clean", BuildDate:"2021-10-29T23:32:16Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}

Helm Version
version.BuildInfo{Version:"v3.8.0", GitCommit:"d14138609b01886f544b2025f5000351c9eb092e", GitTreeState:"clean", GoVersion:"go1.17.5"}

Description
When deploying chart to our AWS EKS cluster, deploy does not end successfully and keeps in CrashLoopBackOff state.
Disabling Pgbouncer solves the issue.
Relevant Logs
$ kubectl get pods
NAME                                           READY   STATUS                  RESTARTS   AGE
airflow-db-migrations-XXXXXXXX                 0/2     Init:CrashLoopBackOff   8          21m
airflow-pgbouncer-XXXXXX                       1/1     CrashLoopBackOff        9          21m
airflow-scheduler-XXXXXX                       0/2     Init:CrashLoopBackOff   8          21m
airflow-web-69b8564fd6-XXXXX                   0/2     Init:CrashLoopBackOff   7          21m

##################################

$ kubectl describe pod airflow-pgbouncer-XXXXXXXXXX
Name:         airflow-pgbouncer-XXXXXXX
Namespace:    airflow
Priority:     0
Node:         XXXXXXXXXXX
Start Time:   Fri, 18 Feb 2022 15:17:54 -0300
Labels:       app=airflow
              component=pgbouncer
              pod-template-hash=XXXXXX
              release=airflow
Annotations:  checksum/secret-config-envs: e5d68d97d93fdf19d5a40e6ceeba766e4ef2776ab0625bedb76958d78a15330d
              checksum/secret-pgbouncer: 5b0f432f568b291e6308fe9ad6f7ebd35e83976fc43447e1ff5cca374178e1cb
              cluster-autoscaler.kubernetes.io/safe-to-evict: true
              kubernetes.io/psp: eks.privileged
Status:       Running
IP:           XXXXXXXX
IPs:
  IP:           XXXXXXXX
Controlled By:  ReplicaSet/airflow-pgbouncer-XXXXXXXX
Containers:
  pgbouncer:
    Container ID:  docker://a78c0d0174f1f7d80843a2ef553020468d387d2eede7346ee911c61c2604a10e
    Image:         ghcr.io/airflow-helm/pgbouncer:1.15.0-patch.0
    Image ID:      docker-pullable://ghcr.io/airflow-helm/pgbouncer@sha256:XXXXXXXX
    Port:          6432/TCP
    Host Port:     0/TCP
    Command:
      /usr/bin/dumb-init
      --rewrite=15:2
      --
    Args:
      /bin/sh
      -c
      /home/pgbouncer/config/gen_auth_file.sh && \
      exec pgbouncer /home/pgbouncer/config/pgbouncer.ini
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Fri, 18 Feb 2022 15:31:13 -0300
      Finished:     Fri, 18 Feb 2022 15:32:29 -0300
    Ready:          False
    Restart Count:  7
    Liveness:       exec [/bin/sh -c psql $(eval $DATABASE_PSQL_CMD) --tuples-only --command="SELECT 1;" | grep -q "1"] delay=5s timeout=60s period=30s #success=1 #failure=3
    Readiness:      tcp-socket :6432 delay=5s timeout=5s period=10s #success=1 #failure=3
    Environment Variables from:
      airflow-config-envs  Secret  Optional: false
    Environment:
      DATABASE_PASSWORD:               <set to the key 'password' in secret 'airflow-rds-root'>  Optional: false
      REDIS_PASSWORD:
      CONNECTION_CHECK_MAX_COUNT:      0
      AIRFLOW__CORE__FERNET_KEY:       <set to the key 'fernet_key' in secret 'airflow-secrets'>            Optional: false
      AIRFLOW__GOOGLE__CLIENT_ID:      <set to the key 'google_client_id' in secret 'airflow-secrets'>      Optional: false
      AIRFLOW__GOOGLE__CLIENT_SECRET:  <set to the key 'google_client_secret' in secret 'airflow-secrets'>  Optional: false
      AWS_DEFAULT_REGION:              eu-west-1
      AWS_REGION:                      eu-west-1
      AWS_ROLE_ARN:                    arn:aws:iam::XXXXXXXXX:role/airflow
      AWS_WEB_IDENTITY_TOKEN_FILE:     /var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Mounts:
      /home/pgbouncer/certs from pgbouncer-certs (ro)
      /home/pgbouncer/config from pgbouncer-config (ro)
      /var/run/secrets/eks.amazonaws.com/serviceaccount from aws-iam-token (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-dl9fv (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  aws-iam-token:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  86400
  pgbouncer-config:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  airflow-pgbouncer
    Optional:    false
  pgbouncer-certs:
    Type:                Projected (a volume that contains injected data from multiple sources)
    SecretName:          airflow-pgbouncer-certs
    SecretOptionalName:  <nil>
  kube-api-access-dl9fv:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                     From               Message
  ----     ------     ----                    ----               -------
  Normal   Scheduled  17m                     default-scheduler  Successfully assigned airflow/airflow-pgbouncer-XXXXXXXXX to ip-XXXXXX.compute.internal
  Warning  Unhealthy  16m                     kubelet            Readiness probe failed: dial tcp 10.12.3.188:6432: connect: connection refused
  Normal   Pulled     13m (x4 over 17m)       kubelet            Container image "ghcr.io/airflow-helm/pgbouncer:1.15.0-patch.0" already present on machine
  Normal   Created    13m (x4 over 17m)       kubelet            Created container pgbouncer
  Normal   Started    13m (x4 over 17m)       kubelet            Started container pgbouncer
  Normal   Killing    13m (x3 over 16m)       kubelet            Container pgbouncer failed liveness probe, will be restarted
  Warning  Unhealthy  7m51s (x20 over 17m)    kubelet            Liveness probe failed: psql: error: could not translate host name "airflow-pgbouncer.airflow.svc.cluster.local" to address: Try again
  Warning  BackOff    2m48s (x19 over 7m21s)  kubelet            Back-off restarting failed container

#####################################

$ kubectl logs airflow-pgbouncer-64d75984c7-9hmlr

Successfully generated auth_file: /home/pgbouncer/users.txt
2022-02-18 18:31:13.751 UTC [7] LOG kernel file descriptor limit: 1048576 (hard: 1048576); max_client_conn: 100, max expected fd use: 112
2022-02-18 18:31:13.752 UTC [7] LOG listening on 0.0.0.0:6432
2022-02-18 18:31:13.752 UTC [7] LOG listening on [::]:6432
2022-02-18 18:31:13.753 UTC [7] LOG listening on unix:/tmp/.s.PGSQL.6432
2022-02-18 18:31:13.753 UTC [7] LOG process up: PgBouncer 1.15.0, libevent 2.1.12-stable (epoll), adns: c-ares 1.17.1, tls: OpenSSL 1.1.1k  25 Mar 2021
2022-02-18 18:32:13.753 UTC [7] LOG stats: 0 xacts/s, 0 queries/s, in 0 B/s, out 0 B/s, xact 0 us, query 0 us, wait 0 us
2022-02-18 18:32:29.267 UTC [7] LOG got SIGINT, shutting down
2022-02-18 18:32:29.419 UTC [7] LOG server connections dropped, exiting

########################################

$ kubectl describe pod airflow-db-migrations-XXXX

Name:         airflow-db-migrations-XXXXXXXX
Namespace:    airflow
Priority:     0
Node:         XXXXXXXXX
Start Time:   Fri, 18 Feb 2022 15:17:55 -0300
Labels:       app=airflow
              component=db-migrations
              pod-template-hash=XXXXXXX
              release=airflow
Annotations:  checksum/db-migrations-script: 5f00610c570937a76488380602536f1a0487c0dea26e2a421a63560257180aae
              checksum/secret-config-envs: e5d68d97d93fdf19d5a40e6ceeba766e4ef2776ab0625bedb76958d78a15330d
              checksum/secret-local-settings: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
              cluster-autoscaler.kubernetes.io/safe-to-evict: true
              kubernetes.io/psp: eks.privileged
Status:       Pending
IP:           XXXXXX
IPs:
  IP:           XXXXXXX
Controlled By:  ReplicaSet/airflow-db-migrations-XXXXXX
Init Containers:
  dags-git-clone:
    Container ID:   docker://XXXXXXX
    Image:          k8s.gcr.io/git-sync/git-sync:v3.2.2
    Image ID:       docker-pullable://k8s.gcr.io/git-sync/git-sync@sha256:XXXXXXXXX
    Port:           <none>
    Host Port:      <none>
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Fri, 18 Feb 2022 15:17:56 -0300
      Finished:     Fri, 18 Feb 2022 15:18:01 -0300
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     50m
      memory:  64Mi
    Requests:
      cpu:     50m
      memory:  64Mi
    Environment Variables from:
      airflow-config-envs  Secret  Optional: false
    Environment:
      GIT_SYNC_ONE_TIME:               true
      GIT_SYNC_ROOT:                   /dags
      GIT_SYNC_DEST:                   repo
      GIT_SYNC_REPO:                   http://XXXXX/airflow-dags.git
      GIT_SYNC_BRANCH:                 master
      GIT_SYNC_REV:                    HEAD
      GIT_SYNC_DEPTH:                  1
      GIT_SYNC_WAIT:                   60
      GIT_SYNC_TIMEOUT:                120
      GIT_SYNC_ADD_USER:               true
      GIT_SYNC_MAX_SYNC_FAILURES:      -1
      GIT_KNOWN_HOSTS:                 false
      GIT_SYNC_USERNAME:               <set to the key 'username' in secret 'airflow-http-git-secret'>  Optional: false
      GIT_SYNC_PASSWORD:               <set to the key 'password' in secret 'airflow-http-git-secret'>  Optional: false
      DATABASE_PASSWORD:               <set to the key 'password' in secret 'airflow-rds-root'>         Optional: false
      REDIS_PASSWORD:
      CONNECTION_CHECK_MAX_COUNT:      0
      AIRFLOW__CORE__FERNET_KEY:       <set to the key 'fernet_key' in secret 'airflow-secrets'>            Optional: false
      AIRFLOW__GOOGLE__CLIENT_ID:      <set to the key 'google_client_id' in secret 'airflow-secrets'>      Optional: false
      AIRFLOW__GOOGLE__CLIENT_SECRET:  <set to the key 'google_client_secret' in secret 'airflow-secrets'>  Optional: false
      AWS_DEFAULT_REGION:              eu-west-1
      AWS_REGION:                      eu-west-1
      AWS_ROLE_ARN:                    arn:aws:iam::XXXXXXXXX:role/airflow
      AWS_WEB_IDENTITY_TOKEN_FILE:     /var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Mounts:
      /dags from dags-data (rw)
      /var/run/secrets/eks.amazonaws.com/serviceaccount from aws-iam-token (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-s929h (ro)
  check-db:
    Container ID:  docker://XXXXXXXXXXXX
    Image:         XXXXXX/airflow:master
    Image ID:      docker-pullable://XXXXXXXX/airflow@sha256:XXXXXXX
    Port:          <none>
    Host Port:     <none>
    Command:
      /usr/bin/dumb-init
      --
      /entrypoint
    Args:
      bash
      -c
      exec timeout 60s airflow db check
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Fri, 18 Feb 2022 15:20:07 -0300
      Finished:     Fri, 18 Feb 2022 15:20:15 -0300
    Ready:          False
    Restart Count:  4
    Environment Variables from:
      airflow-config-envs  Secret  Optional: false
    Environment:
      DATABASE_PASSWORD:               <set to the key 'password' in secret 'airflow-rds-root'>  Optional: false
      REDIS_PASSWORD:
      CONNECTION_CHECK_MAX_COUNT:      0
      AIRFLOW__CORE__FERNET_KEY:       <set to the key 'fernet_key' in secret 'airflow-secrets'>            Optional: false
      AIRFLOW__GOOGLE__CLIENT_ID:      <set to the key 'google_client_id' in secret 'airflow-secrets'>      Optional: false
      AIRFLOW__GOOGLE__CLIENT_SECRET:  <set to the key 'google_client_secret' in secret 'airflow-secrets'>  Optional: false
      AWS_DEFAULT_REGION:              eu-west-1
      AWS_REGION:                      eu-west-1
      AWS_ROLE_ARN:                    arn:aws:iam::XXXXXXX:role/airflow
      AWS_WEB_IDENTITY_TOKEN_FILE:     /var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Mounts:
      /opt/airflow/dags from dags-data (rw)
      /var/run/secrets/eks.amazonaws.com/serviceaccount from aws-iam-token (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-s929h (ro)
Containers:
  db-migrations:
    Container ID:
    Image:         XXXXXXX/airflow:master
    Image ID:
    Port:          <none>
    Host Port:     <none>
    Command:
      /usr/bin/dumb-init
      --
      /entrypoint
    Args:
      python
      -u
      /mnt/scripts/db_migrations.py
    State:          Waiting
      Reason:       PodInitializing
    Ready:          False
    Restart Count:  0
    Environment Variables from:
      airflow-config-envs  Secret  Optional: false
    Environment:
      DATABASE_PASSWORD:               <set to the key 'password' in secret 'airflow-rds-root'>  Optional: false
      REDIS_PASSWORD:
      CONNECTION_CHECK_MAX_COUNT:      0
      AIRFLOW__CORE__FERNET_KEY:       <set to the key 'fernet_key' in secret 'airflow-secrets'>            Optional: false
      AIRFLOW__GOOGLE__CLIENT_ID:      <set to the key 'google_client_id' in secret 'airflow-secrets'>      Optional: false
      AIRFLOW__GOOGLE__CLIENT_SECRET:  <set to the key 'google_client_secret' in secret 'airflow-secrets'>  Optional: false
      AWS_DEFAULT_REGION:              eu-west-1
      AWS_REGION:                      eu-west-1
      AWS_ROLE_ARN:                    arn:aws:iam::550261519331:role/airflow
      AWS_WEB_IDENTITY_TOKEN_FILE:     /var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Mounts:
      /mnt/scripts from scripts (ro)
      /opt/airflow/dags from dags-data (rw)
      /var/run/secrets/eks.amazonaws.com/serviceaccount from aws-iam-token (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-s929h (ro)
  dags-git-sync:
    Container ID:
    Image:          k8s.gcr.io/git-sync/git-sync:v3.2.2
    Image ID:
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       PodInitializing
    Ready:          False
    Restart Count:  0
    Limits:
      cpu:     50m
      memory:  64Mi
    Requests:
      cpu:     50m
      memory:  64Mi
    Environment Variables from:
      airflow-config-envs  Secret  Optional: false
    Environment:
      GIT_SYNC_ROOT:                   /dags
      GIT_SYNC_DEST:                   repo
      GIT_SYNC_REPO:                   http://XXXXX/airflow-dags.git
      GIT_SYNC_BRANCH:                 master
      GIT_SYNC_REV:                    HEAD
      GIT_SYNC_DEPTH:                  1
      GIT_SYNC_WAIT:                   60
      GIT_SYNC_TIMEOUT:                120
      GIT_SYNC_ADD_USER:               true
      GIT_SYNC_MAX_SYNC_FAILURES:      -1
      GIT_KNOWN_HOSTS:                 false
      GIT_SYNC_USERNAME:               <set to the key 'username' in secret 'airflow-http-git-secret'>  Optional: false
      GIT_SYNC_PASSWORD:               <set to the key 'password' in secret 'airflow-http-git-secret'>  Optional: false
      DATABASE_PASSWORD:               <set to the key 'password' in secret 'airflow-rds-root'>         Optional: false
      REDIS_PASSWORD:
      CONNECTION_CHECK_MAX_COUNT:      0
      AIRFLOW__CORE__FERNET_KEY:       <set to the key 'fernet_key' in secret 'airflow-secrets'>            Optional: false
      AIRFLOW__GOOGLE__CLIENT_ID:      <set to the key 'google_client_id' in secret 'airflow-secrets'>      Optional: false
      AIRFLOW__GOOGLE__CLIENT_SECRET:  <set to the key 'google_client_secret' in secret 'airflow-secrets'>  Optional: false
      AWS_DEFAULT_REGION:              eu-west-1
      AWS_REGION:                      eu-west-1
      AWS_ROLE_ARN:                    arn:aws:iam::XXXXXXX:role/airflow
      AWS_WEB_IDENTITY_TOKEN_FILE:     /var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Mounts:
      /dags from dags-data (rw)
      /var/run/secrets/eks.amazonaws.com/serviceaccount from aws-iam-token (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-s929h (ro)
Conditions:
  Type              Status
  Initialized       False
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  aws-iam-token:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  86400
  dags-data:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  scripts:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  airflow-db-migrations
    Optional:    false
  kube-api-access-s929h:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Scheduled  2m57s                 default-scheduler  Successfully assigned airflow/airflow-db-migrations-XXXX to ip-XXXX.XXXX.compute.internal
  Normal   Pulled     2m56s                 kubelet            Container image "k8s.gcr.io/git-sync/git-sync:v3.2.2" already present on machine
  Normal   Created    2m56s                 kubelet            Created container dags-git-clone
  Normal   Started    2m56s                 kubelet            Started container dags-git-clone
  Normal   Pulled     2m50s                 kubelet            Successfully pulled image "XXXXXX/airflow:master" in 117.507452ms
  Normal   Pulled     2m38s                 kubelet            Successfully pulled image "XXXXXX/airflow:master" in 94.706844ms
  Normal   Pulled     2m15s                 kubelet            Successfully pulled image "XXXXXX/airflow:master" in 108.802107ms
  Normal   Created    103s (x4 over 2m50s)  kubelet            Created container check-db
  Normal   Started    103s (x4 over 2m50s)  kubelet            Started container check-db
  Normal   Pulling    103s (x4 over 2m50s)  kubelet            Pulling image "XXXXXX/airflow:master"
  Normal   Pulled     103s                  kubelet            Successfully pulled image "XXXXXX/airflow:master" in 108.808873ms
  Warning  BackOff    70s (x6 over 2m29s)   kubelet            Back-off restarting failed container

########################################

$ kubectl logs -c check-db airflow-db-migrations-74f9cddb8f-vjdnt

[2022-02-18 18:29:52,705] {cli_action_loggers.py:105} WARNING - Failed to log action with (psycopg2.OperationalError) could not connect to server: Connection refused
	Is the server running on host "airflow-pgbouncer.airflow.svc.cluster.local" (172.20.32.223) and accepting
	TCP/IP connections on port 6432?

(Background on this error at: http://sqlalche.me/e/13/e3q8)
Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2336, in _wrap_pool_connect
    return fn()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 364, in connect
    return _ConnectionFairy._checkout(self)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 778, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 495, in checkout
    rec = pool._do_get()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/impl.py", line 140, in _do_get
    self._dec_overflow()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
    compat.raise_(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/impl.py", line 137, in _do_get
    return self._create_connection()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 309, in _create_connection
    return _ConnectionRecord(self)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 440, in __init__
    self.__connect(first_connect_check=True)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 661, in __connect
    pool.logger.debug("Error on connect(): %s", e)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
    compat.raise_(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 656, in __connect
    connection = pool._invoke_creator(self)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/strategies.py", line 114, in connect
    return dialect.connect(*cargs, **cparams)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 508, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "/home/airflow/.local/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection refused
	Is the server running on host "airflow-pgbouncer.airflow.svc.cluster.local" (172.20.32.223) and accepting
	TCP/IP connections on port 6432?

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/airflow/.local/bin/airflow", line 8, in <module>
    sys.exit(main())
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/__main__.py", line 40, in main
    args.func(args)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/cli/cli_parser.py", line 48, in command
    return func(*args, **kwargs)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/utils/cli.py", line 92, in wrapper
    return f(*args, **kwargs)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/cli/commands/db_command.py", line 96, in check
    db.check()
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/utils/session.py", line 70, in wrapper
    return func(*args, session=session, **kwargs)
  File "/home/airflow/.local/lib/python3.8/site-packages/airflow/utils/db.py", line 782, in check
    session.execute('select 1 as is_alive;')
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1295, in execute
    return self._connection_for_bind(bind, close_with_result=True).execute(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1150, in _connection_for_bind
    return self.transaction._connection_for_bind(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 433, in _connection_for_bind
    conn = bind._contextual_connect()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2302, in _contextual_connect
    self._wrap_pool_connect(self.pool.connect, None),
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2339, in _wrap_pool_connect
    Connection._handle_dbapi_exception_noconnection(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1583, in _handle_dbapi_exception_noconnection
    util.raise_(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2336, in _wrap_pool_connect
    return fn()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 364, in connect
    return _ConnectionFairy._checkout(self)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 778, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 495, in checkout
    rec = pool._do_get()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/impl.py", line 140, in _do_get
    self._dec_overflow()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
    compat.raise_(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/impl.py", line 137, in _do_get
    return self._create_connection()
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 309, in _create_connection
    return _ConnectionRecord(self)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 440, in __init__
    self.__connect(first_connect_check=True)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 661, in __connect
    pool.logger.debug("Error on connect(): %s", e)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
    compat.raise_(
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 656, in __connect
    connection = pool._invoke_creator(self)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/strategies.py", line 114, in connect
    return dialect.connect(*cargs, **cparams)
  File "/home/airflow/.local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 508, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "/home/airflow/.local/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
	Is the server running on host "airflow-pgbouncer.airflow.svc.cluster.local" (172.20.32.223) and accepting
	TCP/IP connections on port 6432?

(Background on this error at: http://sqlalche.me/e/13/e3q8)

Custom Helm Values
###################################
# Airflow - Custom Configs
###################################
airflow:

  ## configs for the docker image of the web/scheduler/worker
  ##
  image:

    repository: <custom-repository>/airflow-2.1.4
    tag: master
    pullPolicy: Always

  ## the airflow executor type to use
  executor: KubernetesExecutor

  config:

    AIRFLOW__LOGGING__REMOTE_LOGGING: "true"
    AIRFLOW__LOGGING__REMOTE_BASE_LOG_FOLDER: "s3://XXXX/logs"

    # AUTH
    #AIRFLOW__WEBSERVER__RBAC: "true"
    AIRFLOW__WEBSERVER__BASE_URL: "https://XXXX/"
    AIRFLOW__WEBSERVER__ENABLE_PROXY_FIX: "True"
    AIRFLOW__WEBSERVER__EXPOSE_CONFIG: "true"

    # Workaround to avoid randomly getting SIGTERM in dag execution.
    # https://github.com/apache/airflow/issues/14672#issuecomment-844485176
    AIRFLOW__SCHEDULER__SCHEDULE_AFTER_TASK_EXECUTION: "False"

    PYTHONPATH: "/opt/airflow/dags/repo/"
    AIRFLOW__CORE__XCOM_BACKEND: "include.s3_xcom_backend.S3XComBackend"

  extraEnv:
    - name: AIRFLOW__CORE__FERNET_KEY
      valueFrom:
        secretKeyRef:
          name: XXXX
          key: fernet_key
    - name: AIRFLOW__GOOGLE__CLIENT_ID
      valueFrom:
        secretKeyRef:
          name: XXXX
          key: google_client_id
    - name: AIRFLOW__GOOGLE__CLIENT_SECRET
      valueFrom:
        secretKeyRef:
          name: XXXX
          key: google_client_secret

###################################
# Airflow - WebUI Configs
###################################
web:

  webserverConfig:
    stringOverride: |-
      import os

      from airflow import configuration as conf
      from flask_appbuilder.security.manager import AUTH_OAUTH

      basedir = os.path.abspath(os.path.dirname(__file__))

      SQLALCHEMY_DATABASE_URI = conf.get('core', 'SQL_ALCHEMY_CONN')
      CSRF_ENABLED = True

      AUTH_TYPE = AUTH_OAUTH

      # registration configs
      AUTH_USER_REGISTRATION = True  # allow users who are not already in the FAB DB
      AUTH_USER_REGISTRATION_ROLE = "Viewer"  # this role will be given in addition to any AUTH_ROLES_MAPPING

      # the list of providers which the user can choose from
      OAUTH_PROVIDERS = [
          {
              'name': 'google',
              'icon': 'fa-google',
              'token_key': 'access_token',
              'remote_app': {
                  'client_id': os.environ.get("AIRFLOW__GOOGLE__CLIENT_ID"),
                  'client_secret': os.environ.get("AIRFLOW__GOOGLE__CLIENT_SECRET"),
                  'api_base_url': 'https://www.googleapis.com/oauth2/v2/',
                  'client_kwargs': {
                      'scope': 'email profile'
                  },
                  'request_token_url': None,
                  'access_token_url':'https://accounts.google.com/o/oauth2/token',
                  'authorize_url':'https://accounts.google.com/o/oauth2/auth',
              }
          }
      ]

      # force users to re-auth after 30min of inactivity (to keep roles in sync)
      PERMANENT_SESSION_LIFETIME = 1800

###################################
# Airflow - Worker Configs
###################################
workers:
  enabled: false

###################################
# Airflow - Flower Configs
###################################
flower:
  enabled: false

###################################
## CONFIG | Airflow DAGs
###################################
dags:
  ## the airflow dags folder
  ##
  path: /opt/airflow/dags
  gitSync:
    ## if the git-sync sidecar container is enabled
    ##
    enabled: true
    repo: "http://XXXX/airflow-dags.git"

###################################
## CONFIG | Kubernetes Ingress
###################################
ingress:
  enabled: True
  web:
    annotations:
      kubernetes.io/ingress.class: traefik
      traefik.ingress.kubernetes.io/router.tls: 'true'
      traefik.ingress.kubernetes.io/router.tls.certresolver: dns-resolver
    host: "XXXX"

###################################
# Kubernetes - RBAC
###################################
rbac:
  create: true
  events: False

###################################
# Kubernetes - Service Account
###################################
serviceAccount:
  create: False

###################################
## DATABASE | PgBouncer
###################################
pgbouncer:
  enabled: true

###################################
## DATABASE | Embedded Postgres
###################################
postgresql:
  enabled: False

###################################
## DATABASE | External Database
###################################
externalDatabase:
  type: postgres
  host: XXXX.rds.amazonaws.com
  port: 5432
  database: airflow
  user: airflow
  passwordSecret: "airflow-XXXX"
  passwordSecretKey: "XXXX"
  properties: ""

###################################
## DATABASE | Embedded Redis
###################################
redis:
  enabled: false

###################################
# Prometheus - ServiceMonitor
###################################
serviceMonitor:
  enabled: false

###################################
# Prometheus - PrometheusRule
###################################
prometheusRule:
  enabled: false

@emilianomoscato thanks so much for raising this, it will really help others!
I believe the issue is:

the readinessProbe is timing out (or otherwise failing)
the pgbouncer pod, becomes "unready"
airflow-pgbouncer.{NAMESPACE}.svc.cluster.local not stops resolving to an IP (because there are no ready pods)
the livenessProbe having "connection refused", restarting the pod
(possibly because so many connections are created after the restart, it overloads the pod, causing the readinessProbe to timeout, starting the whole process over again)

I have raised issue https://github.com/airflow-helm/charts/issues/526 to propose replacing the readinessProbe with a startupProbe, which should hopefully address this issue.

authors: emilianomoscato thesuperzapper

repo: airflow-helm/charts


text:
It is possible to send empty messages in the UI

@thorstenairy What's the payload being sent here?

source: gharchive/issue

authors: chrismatix thorstenairy

repo: airyhq/airy

license_type: permissive

license_source: github-api


text:
Datetime为啥不能以DatetimePlugin的形式引入

this.$vux.datetime.show({         cancelText: '取消',         confirmText: '确定',         format: 'YYYY-MM-DD HH',         value: '2017-05-20 18',         onConfirm (val) {           console.log('plugin confirm', val)         },         onShow () {           console.log('plugin show')         },         onHide () {           console.log('plugin hide')         }       })
这种形式不能使用

不能使用是什么意思？报什么错？你有没有在入口处引用？
无法帮助，请自行解决。

authors: airyland wangqihang

repo: airyland/vux

license: MIT


text:
⚠ Turnos 24x7 has degraded performance

In ead52e3, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 3162 ms

Resolved: Turnos 24x7 performance has improved in 90a419b.

repo: aisa-status/status-upptime-dev


text:
⚠ Turnos 24x7 has degraded performance

In ce00f55, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 1017 ms

Resolved: Turnos 24x7 performance has improved in 3cea341.


text:
🛑 BCR Bot is down

In 995d324, BCR Bot (https://bcr.alternativasinteligentes.com/BCRApi/web/chatbot) was down:

HTTP code: 0
Response time: 0 ms

Resolved: BCR Bot is back up in 73d27cf.


text:
⚠ Turnos 24x7 has degraded performance

In d999845, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 1635 ms

Resolved: Turnos 24x7 performance has improved in a7ba267.


text:
オプション引数などを使わないようにする

渡し忘れ防止のため、引数やプロパティを省略できないようにする。
function(param?: T) {} -> function(param: T | undefined) {}
class C {prop?: T} -> class C {prop: T | undefined}

ESLintのお話かな
https://typescript-eslint.io/troubleshooting/faqs/general/#how-can-i-ban-specific-language-feature

authors: salano-ym takejohn

repo: aiscript-dev/aiscript


text:
Link to Metamask

When not installed

done.

repo: aisland-dao/dex


text:
ci: Update GitHub workflows

Resolves: #893
This PR:

updates and adds more strict requirements for node and pnpm
creates a composite github action for the jobs that are needed in every coral check -> setting up node and pnpm as well as creating a cache for pnpm
adds commit hash to github actions for more security
adds a workflow to check for changes in the openapi file and autogenerate ts types if needed as well as running the appropriated checks for them

Follow up tickets

Define a more fitting pipeline strategy
Update to pnpm 8  (not urgend)
More efficient way to use pnpm cache (not urgent at all)

Cases covered
1. there is a change to the openapi file that causes an update in ts types and breaks coral

See pipeline with (removed) test commit:
https://github.com/aiven/klaw/actions/runs/4565400286/jobs/8056484391
2. there is a change to the openapi file that causes an update in ts types but coral is happy with it

will commit the changed api.ds.t file

See pipeline with (removed) test commit:
https://github.com/aiven/klaw/actions/runs/4565474572/jobs/8056662691
3. there is a change to the openapi file that does not affect the ts types at all

See pipeline with (removed) test commit:
https://github.com/aiven/klaw/actions/runs/4565562477/jobs/8056858417?pr=931

I think this is great!

Thank you 🙏

Also, it looks like a fun task to work on
It was. Also frustrating a bit bc I still haven't figured out a good way to check the workflows other then pushing, so I caused a LOT of notifications about broken pipelines for all 🙈  I worked improving pipelines in the past, but in gitlab :D and it was interesting to figure out how things work in the github context.

In general, should we update the high-level section of the root README.md to describe the current CI workflow?
Yes, definitely. I've added follow up tickets (one of them I would like to tackle soon) and thought it would make sense to add a README after. Also, I wanted to get this PR off my chest 😅

As an inspiration from this pr, would it make sense to NOT run the maven worklow if changes only consider coral? 🤔
Yes! I already created a follow up ticket, that's the one I want to tackle next: https://github.com/aiven/klaw/issues/945

In general I can think of a few improvements, but they are a bit premature optimisation :D But please drop every idea or thought that you have!

LOL :D Let's see who is going to merge it in the end 😅

source: gharchive/pull-request

repo: aiven/klaw


text:
Issue with creating receiver address  Token Address

I am trying to send spl token to other user but that user have no token account address. So i want to create it by using Action.createTokenAccount method.

I am doing in this way but it's not working. Anyone can help me with this?

I solved this today.  In System.createAccount() method for fromPublicKey used account.publicKey(sender's publickey) insted of destination and it worked.

This is now fixed on https://github.com/metaplex-foundation/SolanaKT/pull/107

authors: HemangiVekaria ajamaica


text:
Unexpected behaviour of andd

I'm experimenting with Widget composability and decided to try out the form example given in the documentation. I created a gist containing all the code for reference.
Creating a multi form step-by-step widget using traverse works as expected. However, composing them side-by-side using andd results in surprising behaviour (at least for me), when following these steps:

Start a side-by-side composition of the form widget using andd. This results in three forms, laid out on top of each other.
Change every input field of the form into something else, for example "1", "2", "3".
Submit one of the forms by hitting the "Submit" button.
Now there are two forms on the screen, as expected, but the state of these forms returned to their initial value!

I expected each individual form to keep their changed state. Is this expected behaviour or a bug? Should I write other code to make this work as I expect?

Some background: I'm trying to rewrite the edit headings example using widgets instead of signals. Here I ran into the same problem. Probably going to switch to the Haskell version of Concur, because I need some Haskell libs on the backend. I did not try the form example with Haskell yet.

From the code snippet and your description, it does look like a bug in the
implementation of ‘andd’. I’m currently travelling so I will take a look at
this later today.
On Sat, 24 Aug 2019 at 16:57, Tim Steenvoorden notifications@github.com
wrote:

I'm experimenting with Widget composability and decided to try out the
form example given in the documentation
https://github.com/ajnsit/concur-documentation/blob/master/README.md#replicating-elm-architecture.
I created a gist
https://gist.github.com/timjs/eb859d552e7113281f402c7d92e45449
containing all the code for reference.
Creating a multi form step-by-step widget using traverse works as
expected. However, composing them side-by-side using andd results in
surprising behaviour (at least for me), when following these steps:

Start a side-by-side composition of the form widget using andd. This
results in three forms, laid out on top of each other.
Change every input field of the form into something else, for
example "1", "2", "3".
Submit one of the forms by hitting the "Submit" button.
Now there are two forms on the screen, as expected, but the state of
these forms returned to their initial value!

I expected each individual form to keep their changed state. Is this
expected behaviour or a bug? Should I write other code to make this work as
I expect?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ajnsit/purescript-concur/issues/28?email_source=notifications&email_token=AAA7CPRU2FZING7LQXY4GLDQGELLPA5CNFSM4IPF6D6KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HHFSNJA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAA7CPU7K6T4R5GZULZJ3RTQGELLPANCNFSM4IPF6D6A
.

--
Sent from my hyper-communicator

That's fine! Good travels.

On second thoughts, this does not seem like a bug.
When you set a “value” attribute on an input, it’s value will be reset on any state change. React provides a “defaultValue” attribute for this very problem. Can you try changing the attributes to “defaultValue”?

I'll try it out and let you know!

Works better, but still not as I expect:

Change every input field of the form into something else, for example "1", "2", "3".
Submit the second one, containing "2".
Now there are two forms on the screen, as expected, but their values are respectively "1" and "2", instead of "1" and "3".

With defaultValue attribute, you are letting React manage the value of the
input. So you need to provide React with some way to distinguish between
the form instances. Adding a “key” attribute to the form would help (it
also speeds up rendering).
--
Sent from my hyper-communicator

So I’ll need to generate an unique key/ID for every form in the list? I hoped I wouldn’t need to do that with Concur, kind of the big selling point when comparing it with TEA. Like in the tree example where you do not need to index of the subtrees.
Could you help me recreating this example using widgets only instead of signals? I've an implementation in this gist, but probably made some kind of mistake as I did in the form example, as state does not get saved correctly.

Should I add the key to every element? Adding it only to the div results in saving the values of the input fields, but all checkbox are cleared on a submit.

No you only need it at the top level. To get the same behaviour with
checkboxes you need to use ‘defaultChecked’ instead of ‘checked’.
You can read up more about default values in React here -
https://reactjs.org/docs/uncontrolled-components.html#default-values
On Sun, 25 Aug 2019 at 15:08, Tim Steenvoorden notifications@github.com
wrote:

Should I add the key to every element? Adding it only to the div
https://gist.github.com/timjs/eb859d552e7113281f402c7d92e45449#file-form-purs-L33
results in saving the values of the input fields, but all checkbox are
cleared on a submit.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ajnsit/purescript-concur/issues/28?email_source=notifications&email_token=AAA7CPW7TQ7CURHJ5UTCFGDQGJHK3A5CNFSM4IPF6D6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5CQARI#issuecomment-524615749,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAA7CPTTQHHEXRZ53D7ZPCTQGJHK3ANCNFSM4IPF6D6A
.

--
Sent from my hyper-communicator

Obviously! Thanks :-)

Well yeah. It’s not ideal. There is some discussion about Concur keeping
track of the components that change itself without relying on the backend
(react in this case).
However, to clarify one thing - this is only a problem because you want the
form elements’ state to persist without handling it in Concur. There is
some more discussion on better state handling in Concur which might solve
this problem.
On Sun, 25 Aug 2019 at 14:58, Tim Steenvoorden notifications@github.com
wrote:

So I’ll need to generate an unique key/ID for every form in the list? I
hoped I wouldn’t need to do that with Concur, kind of the big selling point
when comparing it with TEA. Like in the tree example
https://github.com/ajnsit/purescript-concur/blob/master/examples/src/Test/EditHeadings.purs
where you do not need to index of the subtrees.
Could you help me recreating this example using widgets only instead of
signals? I've an implementation in this gist
https://gist.github.com/timjs/fd48c0e9f675134b7a09a8d6424e0cb7, but
probably made some kind of mistake as I did in the form example, as state
does not get saved correctly.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ajnsit/purescript-concur/issues/28?email_source=notifications&email_token=AAA7CPRFZPBYXFG37LDCBJDQGJGCDA5CNFSM4IPF6D6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5CP3OQ#issuecomment-524615098,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAA7CPXXTRKQTVMVR4ZYSHTQGJGCDANCNFSM4IPF6D6A
.

--
Sent from my hyper-communicator

So should I use a similar to trick with keys with the tree widget example? Or am I doing something else wrong?
PS Thanks for responding so quickly to my questions! No need to respond immediately if you're trying to enjoy your Sunday however ;-)

Could you help me recreating this example using widgets only instead of signals? I've an implementation in this gist, but probably made some kind of mistake as I did in the form example, as state does not get saved correctly.

Well you can't just andd the children together as then the widget won't save the state until all the children have finished. I created a combinator called displayList which supports widgets which can be deleted and passes any modifications to the list on to the parent. The code with that combinator is at - https://github.com/ajnsit/purescript-concur/commit/ba1a80f21b88a7d0af8a13268e227b32c2593209#diff-5d9f654f8ead8ee8848e2ba690fba9be

@timjs I'm going to close this issue. Please feel free to reopen in case you have more questions or comments!

Thanks Anupam for helping me out. This is an intuitive solution.
So, if andd does not save the state of the widgets internally, what is the intended use case of it?

I think the question of whether the "state" is saved "internally" or not,
is a red herring.
As a rule, there is no state inside Concur, apart from that captured by the
time sequencing monad (the currently executing step in the sequence), and
the (pure and immutable) arguments passed around to functions. If the state
you are looking to save is not captured in an argument, and is not
determined by the position in the monadic sequence, then Concur does not
deal with it.
Given that, it should be possible to understand the semantics of any widget
or widget combinator in Concur by just its type signature.
-- Type signature
andd :: forall a. Array (Widget HTML a) -> Widget HTML (Array a)

-- And usage
do
  ...
  result <- andd children
  ...

Here andd takes an array of widgets, and returns a single widget. Once
you have combined the widgets with andd, there is no internal state of
any internal widget that's visible outside. Only when the entire andd
returns the result are we able to examine the result and possibly save it
ourselves. Monadic sequencing cannot see inside andd since at this level
it's just an opaque single widget.
Now we know that andd does not return a value until all of its
constituents return themselves. So if one or more of the constituents are
widgets with intermediate steps, there is no way to get access to those
intermediate results from outside andd.
This might seem limiting, but it follows directly from the type signature,
and is expected. Mostly andd was created as a dual to orr, and to
provide a nice contrast with traverse in the documentation :) However, as
displayList demonstrates, it's easy to create your own generic
combinators with any semantics you want. Infact you are encouraged to do
so, as ease of composability is the USP of Concur.
Note that all is not lost, and andd could still be useful in the
following circumstances when -

You have simple widgets that either don't have intermediate steps, or
are fine with losing intermediate state.
No ancestors of the andd have any dynamic actions attached. Such as a
bunch of forms at the top level that all need to be filled.
Even if any ancestor of the andd has any dynamic actions attached,
those are expected to reset the intermediate state of the children. Such as
when you have page switching controls at the top, and it's understood that
switching pages loses the state of the forms.

Thanks,
Anupam Jain
On Tue, Aug 27, 2019 at 1:32 PM Tim Steenvoorden notifications@github.com
wrote:

Thanks Anupam for helping me out. This is an intuitive solution.
So, if andd does not save the state of the widgets internally, what is
the intended use case of it?

Here andd takes an array of widgets, and returns a single widget. Once
you have combined the widgets with andd, there is no internal state of
any internal widget that's visible outside. Only when the entire andd
returns the result are we able to examine the result and possibly save it
ourselves. Monadic sequencing cannot see inside andd since at this level
it's just an opaque single widget.

I totally agree with this way of thinking. It would be odd to have a way to "peak into" the current state of a widget in the array. I expect that, after feeding a list of widgets to andd a step made by one of its elements is remembered.
However, the mistake I made was that every kind of event which would change the view of, for example, an input box would be remembered. But that is not true for basic Dom elements, as you explained. I see now that andd works in the expected way when I crate my own input box widget, which remembers every character entered, like this:
inputbox :: String -> Widget HTML String
inputbox value = do
  result <-
    Html.input
      [ Html.autoFocus true
      , Html._type "text"
      , Html.value value
      , Html.placeholder value
      , Just <$> Html.unsafeTargetValue <$> Html.onInput
      , Nothing <$ Html.onKeyEnter
      ]
  case result of
    Just value' -> inputbox value'
    Nothing -> pure value

Glad to hear it!

authors: ajnsit timjs

repo: ajnsit/purescript-concur


text:
error in the text

What issue does this pull request resolve?
it is a documentation improvement
What changes did you make?
I've changed ajv.defalt -> ajv.default
Is there anything that requires more attention while reviewing?

.default is no longer needed in v8 (although it would still work). I probably missed to remove it because of the typo...

merged

authors: epoberezkin vendeza

repo: ajv-validator/ajv


text:
Troubles after Telegram update on November 21, 2016

Hi guys, we got troubles after last Telegram update with this:

Your bot will now get updates about posts in channels. Added new fields channel_post and edited_channel_post to Update.

Here is an exception we were getting after update:
[2016-11-23 23:59:59] prod.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Call to a member function getFrom() on null in /app/Services/TelegramCommands/SystemCommands/GenericmessageCommand.php:49
We fixed it with the following code, could you please add fixes to repository?
public function messenger() { if (array_key_exists("edited_channel_post", \Illuminate\Support\Facades\Input::get())) return; if (array_key_exists("channel_post", \Illuminate\Support\Facades\Input::get())) return; $this->api->handle(); }

It's because of the latest API update, will be fixed
Look here https://github.com/akalongman/php-telegram-bot/pull/333 for commit with a fix

Thanks!

repo: akalongman/php-telegram-bot

license: mit

license_source: bigquery


text:
js code formatter not work under windows 7

Now I met a problem that js code formatter not work for me on windows 7, I got the following error message.
Format error:
No module named 'jsbeautifier.six'
error: CodeFormatter

I tried to reinstall the plugin but not worked.
PS: codeFormatter works fine on my MAC.

@hxshandle did new version fixed this?

@thecotne The new version fixed, thanks.

I get the same problem when i use 'ctrl+alt+F' to format my 'css' file. it tips me the msg :
No module named 'jsbeautifier.six'
I have tried to reinstall the plugin but not worked.
My environment is st3 and win10.

authors: AjiMIde hxshandle thecotne

repo: akalongman/sublimetext-codeformatter


text:
Arrays formatting

New array notation does not get formatted correctly.
Expected format is
 "bar",
    "bar" => "foo",
);

// as of PHP 5.4
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>
Here is what I get :
$array = [ "foo" => "bar", "bar" => "foo",];

CodeFormatter updated to version 3.0.0
Maybe your problems solved
See Release Notes

authors: MattDalm akalongman


text:
Added text utilities app

This is a text utilities app made using react to manipulate text, like, uppercase, lowercase, remove extra spaces etc. I hope to see my PR merged with hacktoberfest-accepted label.

@agrawalkunal2001  Kindly add your project files properly, I am unable to review them


text:
Slide is not centering

I'm unable to centre the slide image to take an even space between the left/right arrows:

render() {
    const items = this.props;

    const settings = {
      dots: true,
      infinite: false,
      speed: 500,
      fade: true,
    };

    return (

        { items.length && <Slider {...settings}>
          { items.map((entry, index) => (

          ))}
        </Slider> }

    );
  }

// css.container compiles to:
.container {
    padding: 3rem;
    max-width: 960px;
    margin: 0 auto;
}

Adding centerMode: true completely breaks it by showing all images as dispay:block; and opacity:0; so it takes up space vertically.
When you resize the browser it snaps into place and everything centers/works flawlessly. So, looks like its not doing something its meant to on initialise?

from my point of view the slick-track is wrong calculated. I try to div in that calculation.

I'm seeing centerMode={true} with centerPadding break the slider by showing multiple (vertical) rows of images too

If anyone has any problem like this anymore, please consider creating a demo on codesandbox and reopening the issue or creating a new one.

According to @chellberg I'v noticed it happens when the wrapping element have a width set. Setting centerPadding to 0px fixes the problem that the carousel has two rows.
https://codesandbox.io/s/0mzw0k4x7w

This is 2024 and I don't want anyone to wrap their head around this issue.
The trick is using afterChange.
    const settings = {
        className: "center slider variable-width slick-gradient",
        centerMode: true,
        infinite: true,
        slidesToShow: 1,
        speed: 100,
        rows: 1,
        slidesPerRow: 1,
        arrows: false,
        centerPadding: "100px",
        beforeChange: (_oldIndex, newIndex) => {
            // ...
        },
        afterChange: (currentIndex) => {
            // Select the element with the class 'slick-track'
            var element = document.querySelector('.slick-track');

            // Get the current transform value
            var currentTransform = getComputedStyle(element).transform;

            // Extract the x translation value. The match function attempts to find the numbers in the matrix transform, which are separated by commas.
            // The matrix format is matrix(a, b, c, d, tx, ty) where tx is our x translation.
            // If the transform is in the translate3d format, it should still match correctly.
            var match = currentTransform.match(/matrix\(([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)/);

            if (match) {
                var currentX = parseFloat(match[5]); // Get the x translation value

                // Calculate the new x value by adding 45
                var newX = currentX + 45;

                // Set the new transform value
                element.style.transform = 'translate3d(' + newX + 'px, 0px, 0px)';
            } else {
                console.log("Could not parse the current transform value.");
            }
        },
        variableWidth: true,
    };

Consider to follow me if this solves your issue. :D

repo: akiran/react-slick


text:
Not able to swipe at firefox.

Swipe is Working fine At chrome, but giving trouble when trying to swipe at firefox

Any updates on this? Still having this issue.
Even the JsFiddle demo has this problem.
https://jsfiddle.net/kirana/20bumb4g/

nope, this issue still persist.

the only way I found to fix this is to do a preventDefault on dragstart event

Commit: 2dc76131e5cc5451c20e18d20f115301dfa57260 should fix this. Changes will be released soon.

authors: ArmandoKenneth Divyansh1605 jmoulin-vp laveesingh


text:
Cannot deserialize types when simplified qualified name is not resolvable by .NET framework

To reproduce, add this test in Hyperion.Tests:
    [Fact]
    public void CanSerializeColor()
    {
	var expected = Color.Aquamarine;
        Serialize(expected);
        Reset();
        var actual = Deserialize<Color>();
        Assert.Equal(expected, actual);
    }

This test in all the .NET core versions will pass but not the one in .NET framework.
The reason is that "System.Drawing.Color, System.Drawing" is not a fully qualified type name in .NET framework.

@alexvaut is this still the case after #116 - could you please send a PR with this test?

authors: Aaronontheweb alexvaut

repo: akkadotnet/Hyperion


text:
Changes are made only to the current configuration (tipically Debug)

I'm using this plugin in order to build a plugin I wrote ( https://bitbucket.org/bugnano/cordova-plugin-networking-multipeer ).
EMBEDDED_CONTENT_CONTAINS_SWIFT is set to YES and LD_RUNPATH_SEARCH_PATHS is set to "@executable_path/Frameworks" only for the Debug configuration.
The problem is that when trying to submit the app to the App Store, it has to be compiled in the Release configuration, and those 2 settings have to be changed manually, as this plugin does not set them correctly (otherwise the app will crash on startup).
I propose to change the settings in all the possible configurations, not just for the current one.

Hello,
I didn't have time to reproduce this issue but it seems to be related to this PR : https://github.com/akofman/cordova-plugin-add-swift-support/pull/11, could you check it and let me know if it's fine with this fixe ?

authors: akofman bugnano


text:
Sorting Article feeds

Hi,
I saw the parameter article-sort-order, but I am missing the one for the article feeds. Is it possible to order those as well, e.g. alphabetically?
regards,
d.

Um, what are "article feeds"?

I guess I used the wrong terminology. I mean the list of configured feeds that opens right after starting Newsbeuter.The listing seems to depend on the order it is configured in in ~/.newsbeuter/url. I am not sure why I came up with the termn "article-feeds".

Oh, that's simply the feed list.
Use feed-sort-order setting for that. Acceptable values are firsttag, title, articlecount, unreadarticlecount and none (this one's the default). You can also select any of those on the fly if you press g while in the feedlist.
Hope this helps.

Yes, that was what I was looking for. Thank you.

Just a note: this parameter seems to be missing in the documentation. I would fork and send a pull-request, but I am not sure that I can cover all of its functionality.

What documentation are you referring to? I can see the parameter mentioned both in Newsbeuter manual (see Table 1 in Section 3) and newsbeuter's manpage. If you're looking at the source code in the repo, the parameter is actually described in doc/configcommands.dsv; the file is then processed and inserted in HTML and manpage. It's a bit involved, but guarantees that both documents are in sync, and also saves us some typing.

ok.. you're right-. I suck at reading documentation:(
I promise to become better in looking for it ;)
Please forget that I complained.

Oh, don't beat yourself about it! Instead, you can actually think what made you miss the parameter the first time you read the documentation and maybe suggest some readability improvements. Is it the structure of the doc that makes it hard? Maybe the parameter is named or described in such a way that you can't easily find it with search? I'll gladly accept suggestions and patches.

authors: Minoru Spreadcat

repo: akrennmair/newsbeuter


text:
CHOOSE NUMBERS!

You are given an array of integers A.
You need to tell whether you can choose three numbers such that a+b>=c.
Input Format
First line consists of number of integers N. next line consists of N space separated integers.
Constraints
1 <= N <= 10^5
Output Format
YES or NO
Sample Input
5
1 2 3 4 9
Sample Output
YES
Explanation
you can choose 1+3 >= 4
Solve the question and raise the Pull Requests.

hey. i would like to work on this issue as a part of Hacktoberfest .please assign it to me.

fork this repo , add your code and then raise a pull request

sure, i will make the PR on 1st oct.

can i do this plz

@akshitagupta15june ,my code is ready for this issue.Should i send the PR ? i have checked, it's code is not there yet in the repository.

Ok @sejalshri

repo: akshitagit/Python


text:
bug(ui): Manual Approval button disabled but can still approve

Description
When manually approving a freight, the APPROVE button for all stages is disabled. This includes having the kargo-admin role assignment.
However, if you click anywhere on the stage except the APPROVE button, you can still approve.
Click on freight and select 'Manual Approval'.

Notice, ALL APPROVE buttons are disabled.

But, if I click on the stage anywhere but not on the APPROVE button, I can approve

With the correct permissions, I would expect the button to be enabled and only the button click produce the desired result.
kargo version 0.9.1

Adding a data point... the same thing happens when following a promotion workflow that starts from the Freight timeline and then asks you to select a Stage.

authors: ed-boykin krancour

repo: akuity/kargo


text:
New theme for web UI

Introduction
This change set contains a concept for a "modern" web UI theme.
It provides an interim solution to the New Web UI roadmap item, which is a high effort feature and currently on hold.
Goals

Improve UX and aesthetics on modern browsers
No loss of legacy browser compatibility when using the 'classic' theme
Minimal changes to existing templates (changes must be theme-agnostic)
No additional steps in the build process, e.g. npm build process
Responsive layout for mobile/tablet

Browser Support
The modern theme is selected as the default for the following browsers:

Safari >= 14 (i.e. Big Sur)
Chrome >=  100 (includes Brave, Vivaldi, etc)
Firefox >= 100
Edge >= 100
Mobile Safari >= 14
Chrome Mobile >= 100

All other browsers and browser versions will be given the classic theme, although it is still possible to switch manually.
Changes

Assets located in static/themes/{theme}
Updates to templates to improve ability to style with CSS, e.g. adding classes, wrappers
Added a new theme called "modern"
Restyled Dropzone uploader from scratch
Added a new endpoint to change theme
Added link in footer to switch between the two themes
Added browser_supports_modern_themes() function
Added auto-selection of modern theme for supported browsers
Added Prettier and Stylelint rules
[Updates to Docker dev environment]

Preview

Try It Out
1. Build and launch Docker containers:
git clone https://github.com/nucleogenic/RASCSI.git --branch webui-modern-theme
cd RASCSI/docker
docker compose build --no-cache
docker compose up

2. Access web UI:

URL: http://localhost:8080
Username: pi
Password: rascsi

Todo

[x] Check compatibility across desktop browsers
[x] Check compatibility on mobile devices
[x] Auto-detect whether to offer classic or modern theme
[ ] Better theme names?

Credits

@rdmark for the many improvements to the web UI template markup over the last few months, and suggesting the user-agents/ua-parser library
Andy in #rascsi-dev for the template feedback

A very elegant approach to reskin the web app, indeed! I'm impressed. The monochrome icons are stylish, and the on hover rainbow effect on the RaSCSI Reloaded text in the header is a nice touch.
My only nitpick layout wise is that having the load configs form on the far left and the save configs form on the far right. I didn't immediately notice the other when looking at either of them. Perhaps centering is better? Or on top of each other as before? Something to iterate on I think.
BTW what do you mean by dropzone.js being uploaded from scratch? I didn't immediately see a code change that corresponded to that.
Left a few nitpick comments for your consideration.

BTW it might be fun to brainstorm more memorable names for the themes than classic and modern. ;)

BTW what do you mean by dropzone.js being uploaded from scratch? I didn't immediately see a code change that corresponded to that.

Oops, I meant to say I've restyled the Dropzone upload-er!

My only nitpick layout wise is that having the load configs form on the far left and the save configs form on the far right. I didn't immediately notice the other when looking at either of them. Perhaps centering is better? Or on top of each other as before? Something to iterate on I think.

That's a fair observation. The rationale was that the most important UI element (IMO) is the table of active devices, so I wanted to visual noise and unused space above it.
We received a comment in #rascsi-dev which critiqued the new theme as having too much vertical padding/whitespace, causing the active devices table not to fit on a 800px depth viewport, so I am hesitant to immediately return these to the stacked layout.
One option - out of scope for this PR - would be to consolidate the two forms; for example, we could start with an empty default.json file (auto-created if missing), then add a 'Save As' button which prompts for the filename.
Example:

Well noted on the conservation of vertical space as a design choice. I like the proposed new unified config management form. We can definitely experiment with that in future PRs.

Note: I'm assuming the failed unit tests are because the nucleogenic fork doesn't have the saved SonarCloud credentials. If this still fails once we merge to develop, I can help figure out what's going on.

@rdmark
Regarding licences:

Icons are from an icon set called Feather. I thought the licence was referenced in the SVG source, but it's actually not, so we need to distribute the copyright attribution and MIT licence with them. I propose we do this by including the original licence file (here) in python/web/src/static/themes/modern/icons/LICENSE.

Bootstrap Reboot has the MIT license and the file python/web/src/static/themes/modern/bootstrap-reboot.css includes the original licence header.

The main question that I have is the inclusion of the large CSS style file with an MIT license. I assume MIT and BSD are compatible but INAL.

Its my understanding that BSD and MIT are compatible as well. It might be worth adding a note at the bottom of LICENSE in the root directory to state that some components are MIT licensed.
(Note: The Banana Pi code that I'm pulling it is also MIT licensed, so this concern is not unique to the web UI)

@nucleogenic I found one i18n bug when playing around with this. The fixed width of the form buttons in the attached device action column lead to some localized strings being truncated. Affects German/Spanish/Swedish currently.
Can we go back to dynamic widths on those buttons again? We never know how long strings future localizations might bring to the table!

Another minor visual bug: When LUNs are in use, the device icon shows up in the LUN column.

@nucleogenic Anything left on your todo list now? The "boring" theme naming may be for the best. They make it very clear what they are.
It'd be great to get this merged to open up for continuous iteration on the Web UI code!

@rdmark I don't think there are any further changes I want to make at this point, so fine to get this merged into develop.

authors: akuker nucleogenic rdmark

repo: akuker/RASCSI


text:
feat(ribbon): don't hunt me ribbon added

Please read and mark the following check list before creating a pull request (check one with "x"):

[x] I read and followed the CONTRIBUTING.md guide.
[x] I read and followed the New Feature Checklist guide.

Short description of what this resolves:
don't hunt me ribbon added for landing

👍

authors: V-Ahmetvaliev nnixaa

repo: akveo/ngx-admin


text:
Can we use react native ui kitten with nativewind?

NativeWind uses Tailwind CSS as scripting language to create a universal style system for React Native.
Can we mix the library with react native ui kitten?
If it's possible what's the potential incompatibility?

@universegalaxy1112 yes you can
Here is how you  can mix 2 theme providers (the example is with @shopify/restyle but the logic is the same)
https://github.com/akveo/react-native-ui-kitten/issues/1618#issuecomment-1125137347

what's the potential incompatibility?
I guess you will have some issues with dark mode and probably custom fonts but they are not blockers. You probably will need to wrap your own solution and export again components from UIKitten.

If your problem is solved can you please close the issue?
It sparks joy for maintainers ✨

Thank you, @flexbox

repo: akveo/react-native-ui-kitten


text:
Real Test

You completed the Parachain Tutorials for your parachain and tested locally?

[X] Yes, we have successfully tested our chain on rococo-local.

Team Name
Test
Parachain Name
Test
ParaID
4286
Parachain Manager Account
5CvkguduE5zDYCozyawTftRQPZqBR7wFfWuc2ZuzK4xSg48j
Is this for a short or long term slot?
Short-term: we registered a parathread with the paraID above.
Upload your Genesis Head (genesis state) - Do not submit a compressed file.
para-2000-genesis-state.txt
Upload your Validation Code (genesis runtime Wasm) - Do not submit a compressed file.
para-2000-wasm.txt
(Optional) Upload your Chain Specification
No response
Anything else we should know?
So... We want to start a XCM channel with X parachain with Y paraID...
Register your Rococo parachain details for polkadot-js/apps

[ ] Polkadot-js Apps UI PR completed

Available here: {FIX ME!!!!}

Parachain is now being onboarded.


text:
[ENH] store the transform time in the BaseTransformer

Is your feature request related to a problem? Please describe.
It is useful to record the time estimators take to fit to help with algorithm comparison. We do this in clustering and classification base class, it would be nice to store transform time in the BaseTransformer class
Describe the solution you'd like
a class variable, e.g. transform_time, that is initialised in reset and calculated in fit after self._is_fitted = True
Describe alternatives you've considered
Just looking at a new transformer and we are currently calculating it in _fit, there is not a currently standard way of doing this so it would be good to shove it up into Base.
Additional context
Add any other context or screenshots about the feature request here.

optimally, there is generic functionality for this that can be called, rather than being copy-pasted in all base classes

authors: TonyBagnall fkiraly

repo: alan-turing-institute/sktime


text:
Dev

Merge progress on orchestration

Wrong way around: please open a new PR from orchestration into dev

authors: ViktorKaz mloning


text:
All contributors

@all-contributors please add ClauFischer for blog, business, code, content, data, doc, design, example, eventOrganizing, ideas, projectManagement

@all-contributors please add @ClauFischer for blog, business, code, content, data, doc, design, example, eventOrganizing, ideas, projectManagement

repo: alan-turing-institute/turing-commons


text:
Failed to call service switch/turn_on. unknown error     -   Charger

Is there an existing issue for this?

[X] I have searched both the existing open issues & recently closed issues and did not find a duplicate of this issue.

I have read about the Fleet API and understand I may need to use it

[X] I understand issues relating to read only commands will be auto closed if not using the Fleet API.

Version of the Tesla component
3.23.0
Version of the Tesla car software
2024.20.1
Model
Model 3
Current Behavior
Attempting to start or stop charge using the "charger" toggle does not work.
"Failed to call service switch/turn_on. unknown error"
Tried restart HASS and reboot car.
First noticed today 14/6/2024
Expected Behavior
Car start or stop charging
Debug logs
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.6.2",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.12.2",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Helsinki",
    "os_name": "Linux",
    "os_version": "6.6.29-haos",
    "supervisor": "2024.06.0",
    "host_os": "Home Assistant OS 12.3",
    "docker_version": "25.0.5",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "kumo": {
      "documentation": "https://github.com/dlarrick/hass-kumo",
      "version": "0.3.11",
      "requirements": [
        "pykumo==0.3.8"
      ]
    },
    "mitsubishi_wf_rac": {
      "documentation": "https://github.com/jeatheak/Mitsubishi-WF-RAC-Integration/",
      "version": "0.4.0",
      "requirements": [
        "aenum>=3.1.11"
      ]
    },
    "tplink_deco": {
      "documentation": "https://github.com/amosyuen/ha-tplink-deco",
      "version": "3.6.2",
      "requirements": [
        "pycryptodome>=3.12.0"
      ]
    },
    "meteogalicia": {
      "documentation": "https://github.com/Danieldiazi/homeassistant-meteogalicia",
      "version": "2023.8",
      "requirements": [
        "MeteoGalicia-API==0.1.1"
      ]
    },
    "nordpool": {
      "documentation": "https://github.com/custom-components/nordpool/",
      "version": "0.0.14",
      "requirements": [
        "nordpool>=0.2",
        "backoff"
      ]
    },
    "tapo_control": {
      "documentation": "https://github.com/JurajNyiri/HomeAssistant-Tapo-Control",
      "version": "5.4.13",
      "requirements": [
        "pytapo==3.3.21"
      ]
    },
    "hacs": {
      "documentation": "https://hacs.xyz/docs/configuration/start",
      "version": "1.34.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "anniversaries": {
      "documentation": "https://github.com/pinkywafer/Anniversaries",
      "version": "5.2.0",
      "requirements": [
        "python-dateutil>=2.8.1",
        "integrationhelper>=0.2.2",
        "voluptuous>=0.12.1"
      ]
    },
    "eaton_ups": {
      "documentation": "https://github.com/jaroschek/home-assistant-eaton-ups",
      "version": "1.1.3",
      "requirements": [
        "pysnmp-lextudio==5.0.34"
      ]
    },
    "samsungtv_smart": {
      "documentation": "https://github.com/ollo69/ha-samsungtv-smart",
      "version": "0.13.4",
      "requirements": [
        "websocket-client!=1.4.0,>=0.58.0",
        "wakeonlan>=2.0.0",
        "aiofiles>=0.8.0",
        "casttube>=0.2.1"
      ]
    },
    "flightradar24": {
      "documentation": "https://github.com/AlexandrErohin/home-assistant-flightradar24",
      "version": "1.14.2",
      "requirements": [
        "FlightRadarAPI==1.3.25",
        "pycountry==23.12.11"
      ]
    },
    "tesla_custom": {
      "documentation": "https://github.com/alandtse/tesla/wiki",
      "version": "3.23.0",
      "requirements": [
        "teslajsonpy==3.12.0"
      ]
    },
    "hslhrt": {
      "documentation": "https://github.com/anand-p-r/hslhrt-hass-custom",
      "version": "0.4",
      "requirements": [
        "python_graphql_client==0.4.3"
      ]
    }
  },
  "integration_manifest": {
    "domain": "utility_meter",
    "name": "Utility Meter",
    "codeowners": [
      "dgomes"
    ],
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/utility_meter",
    "integration_type": "helper",
    "iot_class": "local_push",
    "loggers": [
      "croniter"
    ],
    "quality_scale": "internal",
    "requirements": [
      "croniter==2.0.2"
    ],
    "is_built_in": true
  },
  "setup_times": {
    "null": {
      "setup": 0.00010936900798697025
    },
    "d52d986def9888e65c18bf093a5508c8": {
      "wait_import_platforms": -1.2960946419916581,
      "config_entry_setup": 1.2982533869944746
    },
    "4928962156a2c5876518bfb2ffc8de39": {
      "wait_import_platforms": -1.2981779539986746,
      "config_entry_setup": 1.2993759300006786
    },
    "1148074869b0d7d1ee5b8e5b5272542d": {
      "wait_import_platforms": -1.2993459340068512,
      "config_entry_setup": 1.3004799870104762
    }
  },
  "data": {
    "config_entry": {
      "data": {},
      "disabled_by": null,
      "domain": "utility_meter",
      "entry_id": "d52d986def9888e65c18bf093a5508c8",
      "minor_version": 1,
      "options": {
        "name": "Tesla KWH Charged Montly v2",
        "source": "sensor.quorra_energy_added",
        "cycle": "monthly",
        "offset": 0.0,
        "tariffs": [],
        "net_consumption": false,
        "delta_values": false,
        "periodically_resetting": true,
        "always_available": true
      },
      "pref_disable_new_entities": false,
      "pref_disable_polling": false,
      "source": "user",
      "title": "Tesla KWH Charged Montly v2",
      "unique_id": null,
      "version": 2
    },
    "tariff_sensors": [
      {
        "name": "Tesla KWH Charged Montly v2",
        "entity_id": "sensor.tesla_kwh_charged_montly_v2",
        "extra_attributes": {
          "source": "sensor.quorra_energy_added",
          "status": "collecting",
          "last_period": "545.49",
          "last_valid_state": "0.12",
          "meter_period": "monthly",
          "cron pattern": "0 0 1 * *",
          "last_reset": "2024-05-31T21:00:00.004806+00:00",
          "next_reset": "2024-07-01T00:00:00+03:00"
        },
        "last_sensor_data": {
          "native_value": {
            "__type": "<class 'decimal.Decimal'>",
            "decimal_str": "258.77"
          },
          "native_unit_of_measurement": "kWh",
          "last_period": "545.49",
          "last_reset": "2024-05-31T21:00:00.004806+00:00",
          "last_valid_state": "11.02",
          "status": "collecting",
          "input_device_class": "energy"
        }
      }
    ]
  }
}

Anything else?
car is Model 3 2019 with HW 2.5.
"Charger" toggle has worked for over a year with no issues.
Since last Tesla HASS Intergration update, the Climate Toggle takes at least 5 mins to change state in HASS, and rarely starts the AC in the vehicle, unless I open the Tesla official app.

Not sure the Debug worked... information seems kinda useless for this issue...

2024-06-14 09:58:45.062 DEBUG (MainThread) [custom_components.tesla_custom] Running controller.update()
2024-06-14 09:58:45.062 DEBUG (MainThread) [teslajsonpy.controller] Get vehicles. Force: False Time: 20 Interval 60
2024-06-14 09:58:45.063 DEBUG (MainThread) [custom_components.tesla_custom] Finished fetching tesla_custom data in 0.001 seconds (success: True)
2024-06-14 09:58:46.911 DEBUG (MainThread) [custom_components.tesla_custom] Running controller.update()
2024-06-14 09:58:46.912 DEBUG (MainThread) [teslajsonpy.controller] Get vehicles. Force: False Time: 22 Interval 60
2024-06-14 09:58:46.912 DEBUG (MainThread) [teslajsonpy.controller] 42903: online. Polling policy: connected. Update state: normal. Since last park: 3623. Since last wake up: 595. Idle interval: 600. shift_state: None sentry: False climate: False, charging: Stopped
2024-06-14 09:58:46.912 DEBUG (MainThread) [teslajsonpy.controller] 42903: online; Polling policy set to 'connected' and car is connected. or last_wake_up_time < IDLE_INTERVAL Polling every 100 seconds
2024-06-14 09:58:46.912 DEBUG (MainThread) [teslajsonpy.controller] 42903: Skipping update with state online. Polling: True. Last update: 90 ago. Last parked: 3623 ago. Last wake up 595 ago.
2024-06-14 09:58:46.912 DEBUG (MainThread) [custom_components.tesla_custom] Finished fetching tesla_custom data in 0.001 seconds (success: True)
2024-06-14 09:58:55.062 DEBUG (MainThread) [custom_components.tesla_custom] Running controller.update()
2024-06-14 09:58:55.062 DEBUG (MainThread) [teslajsonpy.controller] Get vehicles. Force: False Time: 30 Interval 60
2024-06-14 09:58:55.062 DEBUG (MainThread) [custom_components.tesla_custom] Finished fetching tesla_custom data in 0.001 seconds (success: True)
2024-06-14 09:58:56.910 DEBUG (MainThread) [custom_components.tesla_custom] Running controller.update()
2024-06-14 09:58:56.910 DEBUG (MainThread) [teslajsonpy.controller] Get vehicles. Force: False Time: 32 Interval 60
2024-06-14 09:58:56.911 DEBUG (MainThread) [teslajsonpy.controller] 42903: online. Polling policy: connected. Update state: normal. Since last park: 3633. Since last wake up: 605. Idle interval: 600. shift_state: None sentry: False climate: False, charging: Stopped
2024-06-14 09:58:56.911 DEBUG (MainThread) [teslajsonpy.controller] 42903: online; Polling policy set to 'connected' and car is connected. or last_wake_up_time < IDLE_INTERVAL Polling every 100 seconds
2024-06-14 09:58:56.911 DEBUG (MainThread) [teslajsonpy.controller] 42903: Updating VEHICLE_DATA
2024-06-14 09:58:56.911 DEBUG (MainThread) [teslajsonpy.connection] Token expiration in 3:06:04
2024-06-14 09:58:56.911 DEBUG (MainThread) [teslajsonpy.connection] get: https://owner-api.teslamotors.com/api/1/vehicles/5YJ3E7EB3KF242903/vehicle_data?endpoints=charge_state%3Bclimate_state%3Bdrive_state%3Bgui_settings%3Bvehicle_config%3Bvehicle_state%3Blocation_data {}
2024-06-14 09:58:57.679 DEBUG (MainThread) [teslajsonpy.connection] 200: {"response":{"id":1492931212315232,"user_id":82355,"vehicle_id":1174770017,"vin":"5YJ3E7EB3KF242903","color":null,"access_type":"OWNER","granular_access":{"hide_private":false},"tokens":["784cfcd19e44ac29","c4fa55ec3fa1c1de"],"state":"online","in_service":false,"id_s":"1492931212315232","calendar_enabled":true,"api_version":76,"backseat_token":null,"backseat_token_updated_at":null,"ble_autopair_enrolled":false,"charge_state":{"battery_heater_on":false,"battery_level":44,"battery_range":126.86,"charge_amps":16,"charge_current_request":16,"charge_current_request_max":16,"charge_enable_request":false,"charge_energy_added":0.12,"charge_limit_soc":80,"charge_limit_soc_max":100,"charge_limit_soc_min":50,"charge_limit_soc_std":80,"charge_miles_added_ideal":0.5,"charge_miles_added_rated":0.5,"charge_port_cold_weather_mode":false,"charge_port_color":"\u003cinvalid\u003e","charge_port_door_open":true,"charge_port_latch":"Engaged","charge_rate":0.0,"charger_actual_current":0,"charger_phases":null,"charger_pilot_current":16,"charger_power":0,"charger_voltage":2,"charging_state":"Stopped","conn_charge_cable":"IEC","est_battery_range":136.75,"fast_charger_brand":"","fast_charger_present":false,"fast_charger_type":"ACSingleWireCAN","ideal_battery_range":126.86,"max_range_charge_counter":0,"minutes_to_full_charge":0,"not_enough_power_to_heat":null,"off_peak_charging_enabled":false,"off_peak_charging_times":"all_week","off_peak_hours_end_time":360,"preconditioning_enabled":false,"preconditioning_times":"weekdays","scheduled_charging_mode":"Off","scheduled_charging_pending":false,"scheduled_charging_start_time":null,"scheduled_charging_start_time_app":240,"scheduled_departure_time":1704368700,"scheduled_departure_time_minutes":825,"supercharger_session_trip_planner":false,"time_to_full_charge":0.0,"timestamp":1718348336592,"trip_charging":false,"usable_battery_level":44,"user_charge_enable_request":false},"climate_state":{"allow_cabin_overheat_protection":false,"auto_seat_climate_left":false,"auto_seat_climate_right":false,"battery_heater":false,"battery_heater_no_power":null,"cabin_overheat_protection":"FanOnly","cabin_overheat_protection_actively_cooling":false,"climate_keeper_mode":"off","cop_activation_temperature":"High","defrost_mode":0,"driver_temp_setting":21.0,"fan_status":0,"hvac_auto_request":"On","inside_temp":30.3,"is_auto_conditioning_on":false,"is_climate_on":false,"is_front_defroster_on":false,"is_preconditioning":false,"is_rear_defroster_on":false,"left_temp_direction":0,"max_avail_temp":28.0,"min_avail_temp":15.0,"outside_temp":20.5,"passenger_temp_setting":21.0,"remote_heater_control_enabled":false,"right_temp_direction":0,"seat_heater_left":0,"seat_heater_rear_center":0,"seat_heater_rear_left":0,"seat_heater_rear_right":0,"seat_heater_right":0,"side_mirror_heaters":false,"supports_fan_only_cabin_overheat_protection":true,"timestamp":1718348336592,"wiper_blade_heater":false},"drive_state":{"gps_as_of":1718347771,"heading":182,"latitude":60.402071,"longitude":25.078937,"native_latitude":60.402071,"native_location_supported":1,"native_longitude":25.078937,"native_type":"wgs","power":0,"shift_state":null,"speed":null,"timestamp":1718348336592},"gui_settings":{"gui_24_hour_time":false,"gui_charge_rate_units":"kW","gui_distance_units":"km/hr","gui_range_display":"Rated","gui_temperature_units":"C","gui_tirepressure_units":"Psi","show_range_units":false,"timestamp":1718348336592},"vehicle_config":{"aux_park_lamps":"Eu","badge_version":0,"can_accept_navigation_requests":true,"can_actuate_trunks":true,"car_special_type":"base","car_type":"model3","charge_port_type":"CCS","cop_user_set_temp_supported":true,"dashcam_clip_save_supported":true,"default_charge_to_max":false,"driver_assist":"ParkerPascal2_5","ece_restrictions":true,"efficiency_package":"Default","eu_vehicle":true,"exterior_color":"SolidBlack","exterior_trim":"Chrome","exterior_trim_override":"Chrome","has_air_suspension":false,"has_ludicrous_mode":false,"has_seat_cooling":false,"headlamp_type":"Premium","interior_trim_type":"Black","key_version":2,"motorized_charge_port":true,"paint_color_override":"","performance_package":"Base","plg":false,"pws":false,"rear_drive_unit":"PM216MOSFET","rear_seat_heaters":1,"rear_seat_type":0,"rhd":false,"roof_color":"RoofColorGlass","seat_type":null,"sentry_preview_supported":false,"spoiler_type":"None","sun_roof_installed":null,"supports_qr_pairing":false,"third_row_seats":"None","timestamp":1718348336592,"trim_badging":"74d","use_range_badging":true,"utc_offset":10800,"webcam_selfie_supported":false,"webcam_supported":true,"wheel_type":"Pinwheel18CapKit"},"vehicle_state":{"api_version":76,"autopark_state_v2":"unavailable","calendar_supported":true,"car_version":"2024.20.1 831cee498fc0","center_display_state":0,"dashcam_clip_save_available":true,"dashcam_state":"Recording","df":0,"dr":0,"fd_window":0,"feature_bitmask":"fbdffbff,24cbc7f","fp_window":0,"ft":0,"homelink_device_count":1,"homelink_nearby":false,"is_user_present":false,"locked":true,"media_info":{"audio_volume":1.3333,"audio_volume_increment":0.333333,"audio_volume_max":10.333333,"media_playback_status":"Stopped","now_playing_album":"","now_playing_artist":"","now_playing_duration":0,"now_playing_elapsed":0,"now_playing_source":"Spotify","now_playing_station":"","now_playing_title":""},"media_state":{"remote_control_enabled":true},"notifications_supported":true,"odometer":82684.747525,"parsed_calendar_supported":true,"pf":0,"pr":0,"rd_window":0,"remote_start":false,"remote_start_enabled":true,"remote_start_supported":true,"rp_window":0,"rt":0,"santa_mode":0,"sentry_mode":false,"sentry_mode_available":true,"service_mode":false,"service_mode_plus":false,"software_update":{"download_perc":0,"expected_duration_sec":2700,"install_perc":1,"status":"","version":" "},"speed_limit_mode":{"active":false,"current_limit_mph":50.0,"max_limit_mph":120,"min_limit_mph":50.0,"pin_code_set":true},"timestamp":1718348336592,"tpms_hard_warning_fl":false,"tpms_hard_warning_fr":false,"tpms_hard_warning_rl":false,"tpms_hard_warning_rr":false,"tpms_last_seen_pressure_time_fl":1718340786,"tpms_last_seen_pressure_time_fr":1718340786,"tpms_last_seen_pressure_time_rl":1718340786,"tpms_last_seen_pressure_time_rr":1718340786,"tpms_pressure_fl":2.9,"tpms_pressure_fr":2.925,"tpms_pressure_rl":2.925,"tpms_pressure_rr":2.9,"tpms_rcp_front_value":2.9,"tpms_rcp_rear_value":2.9,"tpms_soft_warning_fl":false,"tpms_soft_warning_fr":false,"tpms_soft_warning_rl":false,"tpms_soft_warning_rr":false,"valet_mode":false,"valet_pin_needed":false,"vehicle_name":"Quorra","vehicle_self_test_progress":0,"vehicle_self_test_requested":false,"webcam_available":true}}}
2024-06-14 09:58:57.679 DEBUG (MainThread) [custom_components.tesla_custom] Finished fetching tesla_custom data in 0.769 seconds (success: True)
2024-06-14 09:58:58.072 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 255, in _handle_refresh_interval
await self._async_refresh(log_failures=True, scheduled=True)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 411, in _async_refresh
self.async_update_listeners()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 165, in async_update_listeners
update_callback()
File "/config/custom_components/eaton_ups/sensor.py", line 132, in _handle_coordinator_update
super().async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1000, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1126, in _async_write_ha_state
state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

I'm having a similar error when trying to change the charging amps value.
This issue appeared today as well, I haven't had any single problem so far...

+1 here: can't update Amps and can't turn on/ off charging

Can you perform any write actions (eg open boot, windows, charger door, etc)?

It seems to work again now for me. Weird. Server down probably ?

@vdiogo are you using the Fleet API?

Info about Fleet API if you're not using it and only get read data (and write actions fail) then you have to use the Fleet API

Info about Fleet API if you're not using it and only get read data (and write actions fail) then you have to use the Fleet API

Thanks buddy, will give it a try (was working until now, though)

All commands not using Fleet API are now harder than ever to pass through...
See issue #961 for a workaround found to send commands via BLE.

Hi there, I'm using Tesla Fleet API and after some time all action stop working. Can it be a throttling issue with the API?

@pmrosa did you check Tesla HTTP Proxy logs?   I believe the 429 (too many requests, retry later) would show in there. You might need DEBUG level log.

Just to add, had the same problem here, switching on charger, adjust maximum charge.
I did wonder if it is to do with charge on solar, but I think I had the problem before that.
Did note the below errors in Homeassistant core:
Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:241
integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 18:18:55 (12 occurrences)
Last logged: 18:26:29
[546329906048] Unexpected exception
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 241, in handle_call_service
response = await hass.services.async_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2741, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2784, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 977, in entity_service_call
single_response = await _handle_entity_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1049, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/number/init.py", line 121, in async_set_value
await entity.async_set_native_value(native_value)
File "/config/custom_components/tesla_custom/number.py", line 49, in async_set_native_value
await self._car.change_charge_limit(value)
File "/usr/local/lib/python3.12/site-packages/teslajsonpy/car.py", line 830, in change_charge_limit
data = await self._send_command(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/teslajsonpy/car.py", line 785, in _send_command
raise ex
File "/usr/local/lib/python3.12/site-packages/teslajsonpy/car.py", line 770, in _send_command
data = await self._controller.api(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/teslajsonpy/controller.py", line 1367, in api
response = await self.__post_with_retries(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/tenacity/_asyncio.py", line 142, in async_wrapped
return await fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/tenacity/_asyncio.py", line 58, in call
do = await self.iter(retry_state=retry_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/tenacity/_asyncio.py", line 110, in iter
result = await action(retry_state)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/tenacity/_asyncio.py", line 78, in inner
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/tenacity/init.py", line 410, in exc_check
raise retry_exc.reraise()
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/tenacity/init.py", line 183, in reraise
raise self.last_attempt.result()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/usr/local/lib/python3.12/site-packages/tenacity/_asyncio.py", line 61, in call
result = await fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/teslajsonpy/controller.py", line 1390, in __post_with_retries
return await self.__connection.post(command, method=method, data=data, url=url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/teslajsonpy/connection.py", line 166, in post
return await self.__open(url, method=method, headers=self.head, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/teslajsonpy/connection.py", line 218, in __open
raise TeslaException(resp.status_code)
teslajsonpy.exceptions.TeslaException

Really same symptoms as API rate limitations. My logs were exactly as yours... #959

@pmrosa did you check Tesla HTTP Proxy logs? I believe the 429 (too many requests, retry later) would show in there. You might need DEBUG level log.

I saw the logs and there was nothing relevant there but debug was off. I turned it ON now but the integration started working again since yesterday, what shows a little bit more that it should be rate limitation. It's bad because I have a solar surplus management in node red that can turn car charging on and off some times during the day :-( ... but not much (I manage that at node red) so the API should allow only a very limited rate :-(

Just to add, had the same problem here, switching on charger, adjust maximum charge. I did wonder if it is to do with charge on solar, but I think I had the problem before that. Did note the below errors in Homeassistant core: Logger: homeassistant.components.websocket_api.http.connection Source: components/websocket_api/commands.py:241 integration: Home Assistant WebSocket API (documentation, issues) First occurred: 18:18:55 (12 occurrences) Last logged:

I also have charge on solar and I am seeing this although I had seen it before even without the car at home.

@pmrosa did you check Tesla HTTP Proxy logs? I believe the 429 (too many requests, retry later) would show in there. You might need DEBUG level log.

Got it now on the logs with DEBUG on:
`2024-06-16T15:44:47+01:00 [debug] Server returned 429: Too Many Requests: Retry in 33313 seconds
2024-06-16T15:44:47+01:00 [debug] [cc5d536a8caa27ecc62fbc93004d9a35] Retrying transmission after error: Retry in 33313 seconds`
:-(

I beleive that this info in the developers Tesla site show the rates of each type of request and charging is limited to 5.

5 charging commands only? Will this be the same when using the fleet API?

5 charging commands only? Will this be the same when using the fleet API?

This is USING the Fleet API.

Same issue here. Did anyone try this with tessie or teslafi? AFAIK they use the fleet API as well but might have different limits?
In general, using the Fleet API to change charging AMPs only should not fall under the 5 limits per day as it might be "Energy Settings Limits" and have 50k requests a day?

File "/usr/local/lib/python3.12/site-packages/teslajsonpy/controller.py", line 1407, in __post_with_retries_except_unavailable
I'm getting the same! Any solution or are we done?

authors: Avatar1976 baylanger eaggeler gabzqc1 gjaegy pmrosa raphmur skipishere tux43 vdiogo vikdb

repo: alandtse/tesla


text:
Parser bug on arrays  being used in method call

https://github.com/alantech/alan/pull/326#issuecomment-731750937
Thanks again to @MareinK for reporting this!
These work:
app.print(reduce([1, 2, 3], add))
app.print(([1, 2, 3]).reduce(add))

and this does not:
app.print([1, 2, 3].reduce(add))

and gives a nonsensical error message about operators.
This is probably a bug in the ANTLR AST definition, but need to investigate.

To be clear, I think this is another aspect of #98 making it a blend of both AST generation and later parts of the first stage of the compiler.

Confirmed, btw, right here's the definition: https://github.com/alantech/alan/blob/main/compiler/src/ln/Ln.g4#L77
And it only allows constants (true, false, numbers, strings) or paren-wrapped values to be used in the method syntax right now. So I'm going to be redoing all of this anyways, and will take care of that at the same time.

repo: alantech/alan


text:
Cleanup: Move alias functions to separate file (alias.py?)

Motivation: We want to clean up documentation here https://utils.alana.computer/prompt/

Hi @alat-rights
I will take care of this one.

Cool! Excited to see your PR :)

Thanks @Domejko !

authors: Domejko alat-rights

repo: alat-rights/alana-utilities