[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Health-dev] [bug #64414] Federation Queue Manager can not show no-a
From: |
Feng Shu |
Subject: |
Re: [Health-dev] [bug #64414] Federation Queue Manager can not show no-ascii properly. |
Date: |
Sat, 15 Jul 2023 06:19:48 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Luis Falcon <INVALID.NOREPLY@gnu.org> writes:
> Update of bug #64414 (project health):
>
> Status: Ready For Test => Invalid
> Assigned to: None => meanmicio
> Release: None => 4.2.0
>
> _______________________________________________________
>
> Follow-up Comment #2:
>
> Revert changeset 5888:6a0a46ff3791
> https://hg.savannah.gnu.org/hgweb/health/rev/336e36474d34
>
> We should keep it as str. There is a logic about using ensure_ascii=True, so
> it makes sure it always returns a string, instead of a unicode object. To the
> human eye the raw string might look strange, but its represntation in reports
> and packages will be the correct one.
ensure_ascii=False seem to return a string too.
>>> json.dumps(a)
'{"a": "\\u4f60\\u597d"}'
>>> json.dumps(a, ensure_ascii=False)
'{"a": "你好"}'
>>> type(json.dumps(a, ensure_ascii=False))
<class 'str'>
>>>
>
> Thalamus (and Python in general) parses the unicode escaped strings properly,
> so we should keep it like this for now, until we're sure unicode objects are
> properly handled in every instance.
I think it maybe not hard, for:
we use ensure_ascii=False when we create args field of FederationQueue
object.
but, when we send federation queue object to Thalamus, we will do the
following two steps in send_record, so we alway send unicode escaped
strings to thalamus.
1. json.loads(record.args)
2. json.dumps(vals)
-----------------------------------------------------
def send_record(cls, record):
...
if (record.method == 'PATCH'):
if (record.federation_locator):
# [{resource, fields[{name, value}]
for arg in json.loads(record.args):
-------------------------------
...
send_data = requests.request(
'PATCH', url,
data=json.dumps(vals),
-----------------------------------
auth=(user, password), verify=verify_ssl)
...
------------------------------------------------------
json.loads work well when ensure_ascii=False:
>>> json.loads((json.dumps(a, ensure_ascii=False)))
{'a': '你好'}
>
> $python3
> Python 3.9.17 (main, Jun 22 2023, 01:13:35)
> [Clang 13.0.0 (git@github.com:llvm/llvm-project.git
> llvmorg-13.0.0-0-gd7b669b3a on freebsd13
> Type "help", "copyright", "credits" or "license" for more information.
>>>> print("\u738b\u4e00\u5200")
> 王一刀
>
> Thanks!
> Luis
>
>
>
>
> _______________________________________________________
>
> Reply to this item at:
>
> <https://savannah.gnu.org/bugs/?64414>
>
> _______________________________________________
> Message sent via Savannah
> https://savannah.gnu.org/
--