@@ -33,9 +33,6 @@ set_zstd_error(const _zstd_state* const state,
3333 case ERR_COMPRESS :
3434 msg = "Unable to compress zstd data: %s" ;
3535 break ;
36- case ERR_SET_PLEDGED_INPUT_SIZE :
37- msg = "Unable to set pledged uncompressed content size: %s" ;
38- break ;
3936
4037 case ERR_LOAD_D_DICT :
4138 msg = "Unable to load zstd dictionary or prefix for decompression: %s" ;
@@ -151,19 +148,19 @@ set_parameter_error(const _zstd_state* const state, int is_compress,
151148 }
152149 if (ZSTD_isError (bounds .error )) {
153150 PyErr_Format (state -> ZstdError ,
154- "Zstd %s parameter \"%s\" is invalid. (zstd v%s) " ,
155- type , name , ZSTD_versionString () );
151+ "Zstd %s parameter \"%s\" is invalid." ,
152+ type , name );
156153 return ;
157154 }
158155
159156 /* Error message */
160157 PyErr_Format (state -> ZstdError ,
161158 "Error when setting zstd %s parameter \"%s\", it "
162159 "should %d <= value <= %d, provided value is %d. "
163- "(zstd v%s, %d-bit build)" ,
160+ "(%d-bit build)" ,
164161 type , name ,
165162 bounds .lowerBound , bounds .upperBound , value_v ,
166- ZSTD_versionString (), 8 * (int )sizeof (Py_ssize_t ));
163+ 8 * (int )sizeof (Py_ssize_t ));
167164}
168165
169166static inline _zstd_state *
@@ -558,150 +555,81 @@ static PyMethodDef _zstd_methods[] = {
558555};
559556
560557
561- #define ADD_INT_PREFIX_MACRO (module , macro ) \
562- do { \
563- if (PyModule_AddIntConstant(module, "_" #macro, macro) < 0) { \
564- return -1; \
565- } \
566- } while(0)
567-
568- static int
569- add_parameters (PyObject * module )
570- {
571- /* If add new parameters, please also add to cp_list/dp_list above. */
572-
573- /* Compression parameters */
574- ADD_INT_PREFIX_MACRO (module , ZSTD_c_compressionLevel );
575- ADD_INT_PREFIX_MACRO (module , ZSTD_c_windowLog );
576- ADD_INT_PREFIX_MACRO (module , ZSTD_c_hashLog );
577- ADD_INT_PREFIX_MACRO (module , ZSTD_c_chainLog );
578- ADD_INT_PREFIX_MACRO (module , ZSTD_c_searchLog );
579- ADD_INT_PREFIX_MACRO (module , ZSTD_c_minMatch );
580- ADD_INT_PREFIX_MACRO (module , ZSTD_c_targetLength );
581- ADD_INT_PREFIX_MACRO (module , ZSTD_c_strategy );
582-
583- ADD_INT_PREFIX_MACRO (module , ZSTD_c_enableLongDistanceMatching );
584- ADD_INT_PREFIX_MACRO (module , ZSTD_c_ldmHashLog );
585- ADD_INT_PREFIX_MACRO (module , ZSTD_c_ldmMinMatch );
586- ADD_INT_PREFIX_MACRO (module , ZSTD_c_ldmBucketSizeLog );
587- ADD_INT_PREFIX_MACRO (module , ZSTD_c_ldmHashRateLog );
588-
589- ADD_INT_PREFIX_MACRO (module , ZSTD_c_contentSizeFlag );
590- ADD_INT_PREFIX_MACRO (module , ZSTD_c_checksumFlag );
591- ADD_INT_PREFIX_MACRO (module , ZSTD_c_dictIDFlag );
592-
593- ADD_INT_PREFIX_MACRO (module , ZSTD_c_nbWorkers );
594- ADD_INT_PREFIX_MACRO (module , ZSTD_c_jobSize );
595- ADD_INT_PREFIX_MACRO (module , ZSTD_c_overlapLog );
596-
597- /* Decompression parameters */
598- ADD_INT_PREFIX_MACRO (module , ZSTD_d_windowLogMax );
599-
600- /* ZSTD_strategy enum */
601- ADD_INT_PREFIX_MACRO (module , ZSTD_fast );
602- ADD_INT_PREFIX_MACRO (module , ZSTD_dfast );
603- ADD_INT_PREFIX_MACRO (module , ZSTD_greedy );
604- ADD_INT_PREFIX_MACRO (module , ZSTD_lazy );
605- ADD_INT_PREFIX_MACRO (module , ZSTD_lazy2 );
606- ADD_INT_PREFIX_MACRO (module , ZSTD_btlazy2 );
607- ADD_INT_PREFIX_MACRO (module , ZSTD_btopt );
608- ADD_INT_PREFIX_MACRO (module , ZSTD_btultra );
609- ADD_INT_PREFIX_MACRO (module , ZSTD_btultra2 );
610-
611- return 0 ;
612- }
613-
614- static inline PyObject *
615- get_zstd_version_info (void )
616- {
617- uint32_t ver = ZSTD_versionNumber ();
618- uint32_t major , minor , release ;
619-
620- major = ver / 10000 ;
621- minor = (ver / 100 ) % 100 ;
622- release = ver % 100 ;
623-
624- return Py_BuildValue ("III" , major , minor , release );
625- }
626-
627558static inline int
628- add_vars_to_module (PyObject * module )
559+ add_vars_to_module (PyObject * m )
629560{
630- PyObject * obj ;
561+ #define ADD_INT_MACRO (MACRO ) \
562+ if (PyModule_AddIntConstant((m), #MACRO, (MACRO)) < 0) { \
563+ return -1; \
564+ }
631565
632- /* zstd_version, a str. */
633- if (PyModule_AddStringConstant ( module , "zstd_version " ,
634- ZSTD_versionString ()) < 0 ) {
566+ /* zstd_version_number, int */
567+ if (PyModule_AddIntConstant ( m , "zstd_version_number " ,
568+ ZSTD_versionNumber ()) < 0 ) {
635569 return -1 ;
636570 }
637571
638- /* zstd_version_info, a tuple. */
639- obj = get_zstd_version_info ();
640- if (PyModule_AddObjectRef (module , "zstd_version_info" , obj ) < 0 ) {
641- Py_XDECREF (obj );
572+ /* zstd_version, str */
573+ if (PyModule_AddStringConstant (m , "zstd_version" ,
574+ ZSTD_versionString ()) < 0 ) {
642575 return -1 ;
643576 }
644- Py_DECREF (obj );
645577
646- /* Add zstd parameters */
647- if (add_parameters (module ) < 0 ) {
578+ /* ZSTD_CLEVEL_DEFAULT, int */
579+ #if ZSTD_VERSION_NUMBER >= 10500
580+ if (PyModule_AddIntConstant (m , "ZSTD_CLEVEL_DEFAULT" ,
581+ ZSTD_defaultCLevel ()) < 0 ) {
648582 return -1 ;
649583 }
650-
651- /* _compressionLevel_values: (default, min, max)
652- ZSTD_defaultCLevel() was added in zstd v1.5.0 */
653- obj = Py_BuildValue ("iii" ,
654- #if ZSTD_VERSION_NUMBER < 10500
655- ZSTD_CLEVEL_DEFAULT ,
656584#else
657- ZSTD_defaultCLevel (),
585+ ADD_INT_MACRO ( ZSTD_CLEVEL_DEFAULT );
658586#endif
659- ZSTD_minCLevel (),
660- ZSTD_maxCLevel ());
661- if (PyModule_AddObjectRef (module ,
662- "_compressionLevel_values" ,
663- obj ) < 0 ) {
664- Py_XDECREF (obj );
665- return -1 ;
666- }
667- Py_DECREF (obj );
668587
669- /* _ZSTD_CStreamSizes */
670- obj = Py_BuildValue ("II" ,
671- (uint32_t )ZSTD_CStreamInSize (),
672- (uint32_t )ZSTD_CStreamOutSize ());
673- if (PyModule_AddObjectRef (module , "_ZSTD_CStreamSizes" , obj ) < 0 ) {
674- Py_XDECREF (obj );
588+ /* ZSTD_DStreamOutSize, int */
589+ if (PyModule_Add (m , "ZSTD_DStreamOutSize" ,
590+ PyLong_FromSize_t (ZSTD_DStreamOutSize ())) < 0 ) {
675591 return -1 ;
676592 }
677- Py_DECREF (obj );
678593
679- /* _ZSTD_DStreamSizes */
680- obj = Py_BuildValue ( "II" ,
681- ( uint32_t ) ZSTD_DStreamInSize (),
682- ( uint32_t ) ZSTD_DStreamOutSize () );
683- if ( PyModule_AddObjectRef ( module , "_ZSTD_DStreamSizes" , obj ) < 0 ) {
684- Py_XDECREF ( obj );
685- return -1 ;
686- }
687- Py_DECREF ( obj );
594+ /* Add zstd compression parameters. All should also be in cp_list. */
595+ ADD_INT_MACRO ( ZSTD_c_compressionLevel );
596+ ADD_INT_MACRO ( ZSTD_c_windowLog );
597+ ADD_INT_MACRO ( ZSTD_c_hashLog );
598+ ADD_INT_MACRO ( ZSTD_c_chainLog );
599+ ADD_INT_MACRO ( ZSTD_c_searchLog );
600+ ADD_INT_MACRO ( ZSTD_c_minMatch ) ;
601+ ADD_INT_MACRO ( ZSTD_c_targetLength );
602+ ADD_INT_MACRO ( ZSTD_c_strategy );
688603
689- /* _ZSTD_CONFIG */
690- obj = Py_BuildValue ("isOOO" , 8 * (int )sizeof (Py_ssize_t ), "c" ,
691- Py_False ,
692- Py_True ,
693- /* User mremap output buffer */
694- #if defined(HAVE_MREMAP )
695- Py_True
696- #else
697- Py_False
698- #endif
699- );
700- if (PyModule_AddObjectRef (module , "_ZSTD_CONFIG" , obj ) < 0 ) {
701- Py_XDECREF (obj );
702- return -1 ;
703- }
704- Py_DECREF (obj );
604+ ADD_INT_MACRO (ZSTD_c_enableLongDistanceMatching );
605+ ADD_INT_MACRO (ZSTD_c_ldmHashLog );
606+ ADD_INT_MACRO (ZSTD_c_ldmMinMatch );
607+ ADD_INT_MACRO (ZSTD_c_ldmBucketSizeLog );
608+ ADD_INT_MACRO (ZSTD_c_ldmHashRateLog );
609+
610+ ADD_INT_MACRO (ZSTD_c_contentSizeFlag );
611+ ADD_INT_MACRO (ZSTD_c_checksumFlag );
612+ ADD_INT_MACRO (ZSTD_c_dictIDFlag );
613+
614+ ADD_INT_MACRO (ZSTD_c_nbWorkers );
615+ ADD_INT_MACRO (ZSTD_c_jobSize );
616+ ADD_INT_MACRO (ZSTD_c_overlapLog );
617+
618+ /* Add zstd decompression parameters. All should also be in dp_list. */
619+ ADD_INT_MACRO (ZSTD_d_windowLogMax );
620+
621+ /* ZSTD_strategy enum */
622+ ADD_INT_MACRO (ZSTD_fast );
623+ ADD_INT_MACRO (ZSTD_dfast );
624+ ADD_INT_MACRO (ZSTD_greedy );
625+ ADD_INT_MACRO (ZSTD_lazy );
626+ ADD_INT_MACRO (ZSTD_lazy2 );
627+ ADD_INT_MACRO (ZSTD_btlazy2 );
628+ ADD_INT_MACRO (ZSTD_btopt );
629+ ADD_INT_MACRO (ZSTD_btultra );
630+ ADD_INT_MACRO (ZSTD_btultra2 );
631+
632+ #undef ADD_INT_MACRO
705633
706634 return 0 ;
707635}
0 commit comments